Hjälp med java metod som tar in en string parameter som kollar om det angivet värdet finns redan i ArrayListan eller inte

Permalänk
Medlem

Hjälp med java metod som tar in en string parameter som kollar om det angivet värdet finns redan i ArrayListan eller inte

// Min uppgift är att koda metoden läggaTillFågel (String art, String plats). Programmet bör endast kunna lagra en viss fågelart. Det vill säga, om fågelskådaren redan har lagt till fågelarterna "svan" till ArrayList, kommer det inte att vara möjligt att lägga till en ny "svan" till samlingen.

jag har skrivit så länge försökt att skriva detta men det verkar att metoden lägger till en ny fågelart trots att den finns redan i listan, metoden gör inget kontroll.

public void läggTillFågel(String art, String plats){
boolean hittad = false;

for (int i = 0; i < fågelLista.size(); i++){
if(fågelLista.equals(i)){
hittad = true;
}
}
if(hittad)
{
System.out.println("Fågeln fanns redan i listan");
}
else {
Fågel fågel = new Fågel (art, plats);
fågelLista.add(fågel);
System.out.println("En ny fågel har lagts till");

}
}

Permalänk
Medlem

Testa att använda ett "Set" istället för en ArrayList. Ger dig ganska trevliga egenskaper om du inte måste använda just en ArrayList:

https://docs.oracle.com/javase/7/docs/api/java/util/Set.html

Permalänk
Medlem

Du kanske menar

if(fågelLista[i].Art == art) { Hittade = true; }

eller

if(fågelLista[i].Art.equals(art)) { Hittade = true; }

Fågel är väll en klass som innehåller namnet på fågeln, den exponerar förmodligen en Funktion/Metod/Property där man kan hämta namnet, exempelvis Art. Jag vet inte vilken språk det handlar om, kanske C#?

Edit: Java var det visst

Permalänk
Medlem

det är java oop

@Dalton Sleeper:

tack för din svar, men metoden funkar fortfarande inte. Jag får ett felmeddelande som talar om att jag har fel i if statement.

metoden som hämtar värdet Art heter getArt()

public void läggTillFågel(String art, String plats){
boolean hittad = false;
for (int i = 0; i < fågelLista.size(); i++){
if(fågelLista[i].Art.equals(art)) // här får jag felmeddelandet (array required, but java.util.ArrayList<Fågel> found)
{
hittad = true;
}

}
if(hittad)
{
System.out.println("Fågeln fanns redan i listan");
}
else {
Fågel fågel = new Fågel (art, plats);
fågelLista.add(fågel);
System.out.println("En ny fågel har lagts till");

Permalänk
Medlem

Om du läser felmeddelanden så får du svaret.

array required, but java.util.ArrayList<Fågel> found

Om du sedan kollar upp vilka metoder som finns tillgängliga för arrayList så saknas equal och du använder inte get. https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList...

Du använder equals, vilket återfinns i array. https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.ht... Vilket är varför du får ett felmeddelanden där det står att array krävs, men java.util.ArrayList<Fågel> hittad.

Permalänk
Medlem

De borde vara fågellista.get(i).equals(art)

Skickades från m.sweclockers.com

Visa signatur

Desktop: Intel 4790K @ 4,7GHz, MSI 1080 ti SeaHawk EK X, ASUS Maximus VII Hero, 2x 500GB 850 EVO, 256GB Crucial MX100, 32GB 2133 HyperX, EVGA G2 850W, Custom Loop
Server: Synology DS918+
Laptop: Macbook Pro /w touchbar 15", i9 2,9GHz, 32GB, 512GB.