Citat:
Ursprungligen postat av Busmumrik
System.out.print("Minsta svanslängd? ");
int svans=Integer.parseInt(sc.nextLine());
for (int x=0; x<kennel.size(); x++)
if (svans < svansl)
//svansl är längden på just den hundens svans som användaren skriver in på ett annat ställe i koden
System.out.println(kennel.get(x));
Jag förstår inte for-satsen och if-satsen. Du loopar genom en lista "kennel", för varje element jämför du "svans" (som användaren just matat in) med "svansl" som användaren också matat in.
Det kommer ju ge samma resultat för varje kennel.
Matar användaren in 4 för svans och tidigare matat in 5 för svansl, så kommer if-satsen alltid vara sann och du kommer skriva ut kennel.get(x) för alla kennlar. Om tvärtom kommer du inte skriva ut någonting.
Om jag nu gissar hur du tänkt dig så innehåller "kennel" en massa hundar, då skulle det antagligen se ut så här istället:
Kod:
for (int x=0; x<kennel.size(); x++){
if (svans < kennel.get(x).getSvansl())
System.out.println(kennel.get(x).getHundNamn());
}
Jag antar alltså här att "kennel" innehåller objekt av en klass Hund som har en metod getSvansl() som returnerar längden på just den hunden. Sedan jämförs den längden med "minsta svanslängd" som just matats in.
"Hund" innehåller i det här exemplet också getHundNamn() som returnerar namnet på hunden (detta kan istället lösas med att överlagra toString-metoden, men det kanske är överkurs).
Citat:
Ursprungligen postat av Spejnar
Du har inga brackets runt din for-sats.
De behövs inte i det här fallet eftersom det bara är ett uttryck i den. (däremot är if-satsen i sig som sagt fel)
Det går till och med att skriva på en rad:
Kod:
for (int x=0; x<kennel.size(); x++) if (svans < kennel.get(x).getSvansl()) System.out.println(kennel.get(x).getHundNamn());
Fungerar utmärkt utan brackets, däremot är det inte att rekommendera för att det är svårt att lägga till kod om man skulle vilja.