I'estou a aprender Java e I'estou a ter um problema com ArrayList
e RandomGenerator
.
Tenho um objecto chamado "catálogo", que tem uma lista de objectos criados a partir de outra classe chamada "item".
Preciso de um método em "catálogo" que devolva toda a informação sobre um dos "objectos" da lista.
O item
precisa de ser seleccionado aleatoriamente.
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");
}
Quando tento compilar obtenho um erro apontando para a linha System.out.println
que diz...
'não consegue encontrar nenhumaItem'variável de símbolo;
O anyItem
é um método e a chamada System.out.println
é após a sua declaração de retorno, de modo que won't compilar de qualquer forma, uma vez que é inalcançável.
Talvez queira reescrevê-lo como se estivesse:
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;
}
}
a sua impressão vem depois do seu regresso - nunca poderá chegar a essa declaração. Além disso, nunca declarou qualquerItem como sendo uma variável. Pode querer
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;
}
A parte toString é apenas uma rapidinha -- talvez queira adicionar um método 'getItemDescription' que devolve uma String útil para este fim...
Deve remover a mensagem system.out.println
de baixo a mensagem return
, como esta:
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;
}
a declaração "retorno" basicamente diz que a função terminará agora. qualquer coisa incluída para além da declaração "retorno" que também esteja no âmbito da mesma resultará no comportamento que experimentou