在我的代码中,我试图遍历arraylist,看看是否有重复出现的数字。我不断收到一个错误消息,说我有一个丢失的return语句。我的代码正确吗?如何解决此问题。
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(3);
list.add(2);
list.add(7);
list.add(2);
System.out.println("Type a number: ");
int number = Integer.parseInt(in.nextLine());
if (moreThanOnce(list,number)) {
System.out.println(number + " appears more than once");
}
else
System.out.println(number + " number does not appear more than once");
}
public static boolean moreThanOnce(ArrayList<Integer> list , int number) {
int count = 0;
for (int i = 1; i < list.size(); i ++ ) {
if (list.get(i) == number) {
count ++;
if (count > 1) {
return true;
}
else
return false;
}
}
答案 0 :(得分:2)
只需删除else部分并将“ return false”返回到moreThanOnce方法中的for循环之外
答案 1 :(得分:1)
public static boolean moreThanOnce(ArrayList<Integer> list , int number) {
int count = 0;
for (int i = 1; i < list.size(); i ++ ) {
if (list.get(i) == number) {
count ++;
if (count > 1) {
return true;
}
else //delete this line
return false; // delete this line
}
}
return false;//add return here
}
要解决该错误,只需要在for循环之外返回即可。 而且我认为您应该删除其他逻辑,从而使该方法无法正确找到多次出现的数字。
答案 2 :(得分:1)
更改为:
public static boolean moreThanOnce(ArrayList<Integer> list , int number) {
int count = 0;
for (int i = 1; i < list.size(); i ++ ) {
if (list.get(i) == number) {
count ++;
if (count > 1) {
return true;
}
}
}
return false;
}
如果没有一个等于number的重复编号并且也从未进入for循环,则这保证返回一个return语句(false)。如果满足您输入的条件,它将返回true。
答案 3 :(得分:0)
在moreThanOnce方法中未执行for循环的情况下,您会丢失return语句。
答案 4 :(得分:-1)
您缺少moreThanOnce()的右括号“}”。它有四个开放括号,但只有三个封闭括号。
大多数面向代码的编辑器都会为您匹配大括号,并帮助查找不平衡的大括号(以及括号等),找出在编辑器中执行此操作的方式,因为这是整个编程生涯中所需要的。