webForumDet fria alternativet

Objekt-variabel strul

1 svar · 428 visningar · startad av AG

AGMedlem sedan mars 20001 229 inlägg
#1

Har ett problem med en if-then-else sats.
Saken är den att den inte verkar vilja läsa
en viss variabel.
Så här ser koden ut:
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
<%
String te = (String) "Ett värde";
String tes = (String) result.elementAt(1);
if (te==result.elementAt(1)){
%>
Finns redan
<p> </p>
<%
}
else {
%>
Finns EJ
<p> </p>
<%
}
%>

result.elementAt(1) innehåller värdet som är samma
som i te. Men if satsen skriver ändå ut svaret "Finns EJ"
Om jag däremot ändrar till:
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
String tes = (String) result.elementAt(1);
if (tes==result.elementAt(1)){
%>
'tes istället för te

Så skriver den ut finns redan.
Så frågan till eder är som följer, var ligger felet?

Andreas

sgtpepperMedlem sedan apr. 20005 524 inlägg
#2

När du skall jämföra strängar måste du använda String-objektets metod equals() eftersom en vanlig jämförelse med == endast jämför om det är samma objekt vilket det inte nödvändigtvis måste vara även om strängarna innehåller samma text (det kan dock vara samma objekt ibland men det är svårt att veta på förhand och beror på hur Javas stränghantering är uppbyggd)

Alltså, ändra till detta:
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
<%
String te = (String) "Ett värde";
String tes = (String) result.elementAt(1);
if (te.equals(result.elementAt(1))){
%>
Finns redan
<p> </p>
<%
}
else {
%>
Finns EJ
<p> </p>
<%
}
%>

------------------
"Med ett schysst järnrör slår man hela världen med häpnad" - Socker-Conny

[Redigerat av sgtpepper den 10 mar 2001]

Genererad på 377 ms · cache AV · v20260730165559-full.f96bc7eb