我正在为一个程序编写以下代码,该程序返回一个布尔值,表示一个int数组中的三个连续数字是否加起来为7.它没有返回正确的布尔值,我很难理解为什么。< / p>
public static void main(String[] args) {
int[] numbers ={2,1,5,1,0};
System.out.println(luckysevens(numbers));
}
public static boolean luckysevens(int array[]) {
boolean isLucky=false;
for (int i=0; (i<=((array.length)-2)); i++){
if ((array[i]+array[i+1]+array[i+2])==7)
{
isLucky=true;
}
else {
i++;
}
}
return isLucky;
}
}
答案 0 :(得分:0)
为了使代码有效,你必须做两件事!
使用变量 i 的增量删除else部分(这会破坏循环中的登录)
使用&lt; 代替&lt; = 进行循环(这会导致 IndexOutOfBoundsException )
public static boolean luckysevens(int array[]) {
boolean isLucky = false;
for (int i = 0; i < (array.length - 2); i++) {
if ((array[i] + array[i + 1] + array[i + 2]) == 7) {
isLucky = true;
}
}
return isLucky;
}
答案 1 :(得分:0)
你可以省略else部分,因为在每次迭代中,i
都应该增加。如果我是你,我会这样做:
public static boolean luckysevens(int array[]) {
if(array.length < 3)
return false;
for (int i=0; i<array.length-2; i++){
if (array[i]+array[i+1]+array[i+2] == 7)
return true;
return false;
}
注意:最好将方法命名为luckySevens
,而不是luckyseven
。
答案 2 :(得分:-1)
您正在双重递增for循环,并且您的方法签名也存在问题。它应该是:
public static boolean luckysevens(int[] array) {
boolean isLucky=false;
for (int i=0; i<=array.length-2; i++)
{
if ((array[i]+array[i+1]+array[i+2])==7)
{
isLucky=true;
}
}
return isLucky;
}