我正在学习Java,我在使用ArrayList
和RandomGenerator
时遇到了问题。
我有一个叫目录'的对象,它有一个由另一个叫
项目'的类创建的对象数组列表。
我需要catalogue
中的一个方法来返回列表中item
对象的所有信息。
这个 "项目 "需要被随机选择。
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");
}
当我试图编译时,我得到一个错误,指向System.out.println
行说...
'无法找到符号变量anyItem';
anyItem
是一个方法,System.out.println
的调用在你的返回语句之后,所以无论如何不会编译,因为它是不可达的。
可能要重新写成这样:
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;
}
}
你的打印是在你返回之后进行的 -- 你永远也到不了那个语句。另外,你从来没有声明任何Item是一个变量。你可能想
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的部分只是一个速成的方法 -- 你可能想添加一个方法'getItemDescription',为这个目的返回一个有用的String...
你必须把 "return "下面的 "system.out.println "信息删除,像这样:
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 "语句表示函数现在将结束。"return "语句以外的任何内容,如果也在其范围内,将导致你所遇到的行为。