webForumDet fria alternativet

Variabelproblem

2 svar · 230 visningar · startad av swange

swangeMedlem sedan aug. 200220 inlägg
#1

Har ett problem med variabler. Jag har skapat en Receive-klass som har till uppgift att hämta meddelande från en Multicastsocket via joingroup, följande kod skapar datagrampacket:
DatagramPacket dpreceive = new DatagramPacket(data, data.length); ms1.receive(dpreceive);//ms1 är multisocketen
String received = new String(dpreceive.getData(), dpreceive.getOffset(), dpreceive.getLength());

Varje datagram läggs i en datasamling som deklareras:
List samling = Collections.synchronizedList(new ArrayList());

Sedan har jag en if sats som ska kolla om det som ligger i strängen received är samma som finns i datasamlingen för att undvika att lägga in samma meddelande igen:

if(samling.isEmpty()){
samling.add(received);
}
else{
for(Iterator i = samling.iterator(); i.hasNext(); ){
String str = (String) i.next();
if(str == received){

Problemet är att den inte går in i if-satsen här ovanför. Jag har testat att skriva ut både str och received och båda innehåller samma sträng. Varför tar den inte argumentet? Testade att hårdkoda str: if(str == "hej") och då funkade det. Vad är fel?

//Stefan

phonkworksMedlem sedan juli 2001228 inlägg
#2

Jämför man två strängar med == så kollar man om det är samma objekt. Ska man jämföra innehållet i strängarna använder man equals().
Så pröva if(str.equals(received)) istället.

mvh
phonk

swangeMedlem sedan aug. 200220 inlägg
#3

Tack, funkar nu!
=o)

134 ms totalt · 3 externa anrop · v20260731065814-full.30151723
130 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)