我在执行此功能时遇到问题,因为它会打印出来" true"如果数组中有2个连续数字,则" false"如果不是。我得到的错误是布尔值不能转换为int,也在最后一行代码中,我必须将它放在System.out.println()的括号内?
public class A1Q2 {
private static int hasTwoLengthRun(int[] array) {
for(int i=0; i < array.length; i++){
if(array[i+1] == array[i]){
return true;
}
else{
return false;
}
}
}
public static void main(String[] args) {
int[] array = new int[]{5, 16, 7, 35, -2, -9, 75};
System.out.println();
}
}
答案 0 :(得分:1)
我在这里看到至少3个问题:
hasTwoLengthRun
函数的返回类型应为boolean
return false
语句 - 应该在方法的最后调用它以下是更正后的代码:
public class Test {
private static boolean hasTwoLengthRun(int[] array) {
for(int i=0; i < array.length - 1; i++){
if(array[i+1] == array[i]){
return true;
}
}
return false;
}
public static void main(String[] args) {
int[] array = new int[]{5, 16, 7, 35, -2, -9, 75};
System.out.println(hasTwoLengthRun(array));
}
}
答案 1 :(得分:1)
1)当您返回hasTwoLengthRun()
值时,boolean
应该返回int
而不是boolean
。
2)一旦数组的两个元素不等于它,它就会返回false
,因为它有一个破坏的逻辑。
只有在遍历所有元素时才应返回false
。
3)对于编译器,该方法不返回值,因为只返回for
中的值。如果您有一个没有元素的数组,则不必输入for
并且不返回任何内容。这不合法。
4)当最后一次迭代使用数组中的索引时,您将获得ArrayIndexOutOfBoundsException
for
条件。
这是一个应该有效的代码:
private static boolean hasTwoLengthRun(int[] array) {
for (int i = 0; i < array.length - 1; i++) {
if (array[i + 1] == array[i]) {
return true;
}
}
return false;
}
答案 2 :(得分:0)
您收到错误,因为您已经写过hasTwoLengthRun
函数返回int
,而在您的return
语句中,您返回true
或{{1 } - 一个false
- 类型的值。
答案 3 :(得分:0)
下面:
private static int hasTwoLengthRun(...
表示该方法应返回一个int。一个数字。
然后你返回true / false。在java中,这两种类型可以不互换。
所以,改为:
private static boolean hasTwoLengthRun(...
除了;你的逻辑错了:
for(int i=0; i < array.length-1; i++){
if(array[i+1] == array[i]) {
return true;
}
}
return false;
是您需要的; A)避免运行超过数组的长度,B)当前两个元素与你的条件不匹配时,不返回false!