如果数组的所有数目都增加,如何返回true,否则返回false?
public static boolean isIncreasing(int[] array){
boolean result = false;
int count = 0;
for (int i = 0; i < array.length - 1; i++) {
if(array[i] <= array[i + 1]){
result = true;
}else
result = false;
}
return result;
}
当我进行测试时:
isIncreasing([1, 3, 4]) → true
isIncreasing([1, 3, 2]) → false
isIncreasing([1, 1, 4]) → true
但是当我尝试时:
isIncreasing([1,1,2,4,4,2,8,8]) → true
有人可以帮助我吗?
答案 0 :(得分:1)
这是因为要将结果设置为false,然后继续循环,结果将被覆盖。
更改此:
for (int i = 0; i < array.length - 1; i++) {
if(array[i] <= array[i + 1]){
result = true;
}else
result = false;
}
对此:
for (int i = 0; i < array.length - 1; i++) {
if(array[i + 1] <= array[i])
return false;
}
return true;
这还可以通过在解决错误的同时删除多余的else
分支来降低代码的复杂性。
答案 1 :(得分:1)
4到2给出false
。
但这没关系。因为在那之后2到8又是true
。
您的代码仅给出了最后的比较。
更好:
public static boolean isIncreasing(int[] array){
int arraylength = array.length;
for (int i = 0; i < arraylength - 1; i++) {
if(array[i] > array[i + 1])
return false;
}
return true;
}