我为两种情况都输入了return语句,if和else
但它仍然说缺少return语句
我的代码出了什么问题?
public static getNext(){
ArrayList<String> copy = new ArrayList<String>();
Random dice = new Random();
int rolls;
for(int x=0; x<i.length; x++){
copy.add(i[x]);
}
if(copy.size() < 1){
return "NONE";
}
else{
rolls = dice.nextInt(copy.size());
return copy.get(rolls);
copy.remove(rolls);
}
}
答案 0 :(得分:1)
else{
rolls = dice.nextInt(copy.size());
return copy.get(rolls);
copy.remove(rolls); <--- UNREACHABLE
}
由于返回后代码行无法访问,您的编译器可能会错过return语句。
另外,您尚未声明返回的类。应该有:
public static <return type> methodName(<parameters>) {
<body>
}
问:如何在返回后删除copy.get(roll)?有办法吗?
A:基本上问题是关于功能的概念。函数是一段执行某些逻辑的代码,然后根据它返回一些东西。返回语句是函数中发生的最后一件事。
您还可以拥有一个不返回任何内容的代码块,但需要参数。这些被称为程序。无论如何,在Java中我们都称它们为:函数和过程方法。
答案 1 :(得分:1)
你的代码中有一些误解:
首先当你返回时,方法应该返回一些东西
第二次您不能在return
之后指定任何类型的陈述
第三次您必须存储要删除的返回值并将其返回到单独的变量中
您的代码应如下所示:
public static String getNext() {
//-------------^^------------return type
ArrayList<String> copy = new ArrayList<String>();
Random dice = new Random();
int rolls;
for (int x = 0; x < i.length; x++) {
copy.add(i[x]);
}
if (copy.size() < 1) {
return "NONE";
} else {
rolls = dice.nextInt(copy.size());
String s = copy.get(rolls);//<<----------put the val you want in separate variable
copy.remove(rolls);//<<-----------remove your val
return s;//<<-----------return your val
}
}
注意强>
在注释中提及@BackSlash时,从列表中删除你的val是没用的,因为在你离开你的方法后它不会被使用,所以如果你在另一个地方使用这个List你必须在外面声明它你的方法例如:
private static ArrayList<String> copy = new ArrayList<String>();
public static String getNext() {
//ArrayList<String> copy = new ArrayList<String>();//<<<-------------useless position
....