Java - sökmetoden som alltid returnerar -1

Permalänk
Medlem

Java - sökmetoden som alltid returnerar -1

Här är koden :

public int sök(ArrayList personerna, String ss){
int index = -1;
Personer p;

for (int i = 0; i < personerna.size(); i++) {
p = (Personer)personerna.get(i);
if (p.efterNamn()==ss)
return i;
}
return index;
}

Någon som vet varför det alltid returneras -1?

Permalänk
Medlem

== funkar inte för strängar .. använd .. if(p.efterNamn().equals(ss)) .., '==' kontrollerar om variablerna refererar samma object.
btw. Använd [.code] , [./code] när du postar kod (utan punkterna alltså)..

Citat:

Don't confuse the equals method with the equality operator (==).
If you try to compare two strings like this:

if str == str2
System.out.println ("true");
else
System.out.println ("false");

you are actually checking to see whether the two references str and
str2 refer to the same object. It is possible that two strings are equal
without them being the same object. So if you want to compare the
contents of the string use equal, if you want to check if the two
references refer to the same object use ==. Two references which
point to the same object will always return true with the equals
method, but two references which refer to different objects, both
containing the same string, with be false with the == operator.

Bug: Vad händer om det existerar mer än en person med samma efternamn? .. omöjligt att hitta den personen då .. returnera en lista istället med alla personer med det efternamnet.

Visa signatur

Intel Core i7-3770K | NVIDIA Geforce GTX 980 | 16 GB DDR3 | DELL P2415Q | DELL U2711 | DELL U2410

Permalänk
Hedersmedlem

Re: Java - sökmetoden som alltid returnerar -1

public int sök(ArrayList personerna, String ss){ int index = -1; Personer p; for (int i = 0; i < personerna.size(); i++) { p = (Personer)personerna.get(i); if (p.efterNamn()==ss) return i; } return index; } Någon som vet varför det alltid returneras -1?

Nu har jag inte så bra koll på Java, men är p.efterNamn() en giltig metod? Är det så man anger arrayfält i Java?

Permalänk
Medlem

Re: Re: Java - sökmetoden som alltid returnerar -1

Citat:

Ursprungligen inskrivet av Teetow

public int sök(ArrayList personerna, String ss){ int index = -1; Personer p; for (int i = 0; i < personerna.size(); i++) { p = (Personer)personerna.get(i); if (p.efterNamn()==ss) return i; } return index; } Någon som vet varför det alltid returneras -1?

Nu har jag inte så bra koll på Java, men är p.efterNamn() en giltig metod? Är det så man anger arrayfält i Java?

p är ju ett "Personer" objekt, och efterNamn() är ju tydligen en funktion som returnerar en String. Vad har detta med arrayfält att göra?

Visa signatur

Intel Core i7-3770K | NVIDIA Geforce GTX 980 | 16 GB DDR3 | DELL P2415Q | DELL U2711 | DELL U2410

Permalänk
Medlem

Testa med

if(ss.equals(p.efterNamn())) { /*data*/ }

Permalänk
Medlem

Att använda if() {} är onödigt i det här programmet...

if(bla == bla) blabla();

har samma effekt som

if(bla == bla) { blabla(); }

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Tools10
Att använda if() {} är onödigt i det här programmet...

if(bla == bla) blabla();

har samma effekt som

if(bla == bla) { blabla(); }

Det blir mer lättläst kod om du använder måsvingar. Tycker jag.

Permalänk
Hedersmedlem

Re: Re: Re: Java - sökmetoden som alltid returnerar -1

Citat:

Ursprungligen inskrivet av MagnusL
p är ju ett "Personer" objekt, och efterNamn() är ju tydligen en funktion som returnerar en String. Vad har detta med arrayfält att göra?

Ingenting, det var därför jag var lite fundersam. Pay no attention to me