Jeg holder på å lære meg Java og har et problem med ArrayList
og RandomGenerator
.
Jeg har et objekt som heter katalog
som har en array-liste med objekter som er opprettet fra en annen klasse som heter item
.
Jeg trenger en metode i catalogue
som returnerer all informasjon om ett av item
-objektene i listen.
Objektet må velges tilfeldig.
import java.util.ArrayList;
import java.util.Random;
public class Catalogue
{
private Random randomGenerator;
private ArrayList<Item> catalogue;
public Catalogue ()
{
catalogue = new ArrayList<Item>();
}
public Item anyItem()
{
int index = randomGenerator.nextInt(catalogue.size());
return catalogue.get(index);
System.out.println("Managers choice this week" + anyItem + "our recommendation to you");
}
Når jeg prøver å kompilere, får jeg en feilmelding på linjen System.out.println
som sier...
'kan ikke finne symbolvariabelen anyItem'
anyItem
er en metode, og System.out.println
-kallet er etter return-setningen, så det vil uansett ikke kompilere siden det ikke kan nås.
Det kan være lurt å skrive det om som følger:
import java.util.ArrayList;
import java.util.Random;
public class Catalogue
{
private Random randomGenerator;
private ArrayList<Item> catalogue;
public Catalogue()
{
catalogue = new ArrayList<Item>();
randomGenerator = new Random();
}
public Item anyItem()
{
int index = randomGenerator.nextInt(catalogue.size());
Item item = catalogue.get(index);
System.out.println("Managers choice this week" + item + "our recommendation to you");
return item;
}
}
utskriften kommer etter at du har returnert - du kan aldri nå den setningen. Du har heller aldri deklarert anyItem som en variabel. Du burde kanskje
public Item anyItem()
{
int index = randomGenerator.nextInt(catalogue.size());
Item randomItem = catalogue.get(index);
System.out.println("Managers choice this week" + randomItem.toString() + "our recommendation to you");
return randomItem;
}
toString-delen er bare en kjapp idé - det kan være lurt å legge til en metode 'getItemDescription' som returnerer en nyttig String for dette formålet...
Du må fjerne meldingen system.out.println
under return
, slik:
public Item anyItem()
{
randomGenerator = new Random();
int index = randomGenerator.nextInt(catalogue.size());
Item it = catalogue.get(index);
System.out.println("Managers choice this week" + it + "our recommendation to you");
return it;
}
return
-setningen sier i utgangspunktet at funksjonen nå skal avsluttes. alt som inkluderes etter return
-setningen og som også er i scope for den, vil resultere i oppførselen du opplevde