数组返回测试

时间:2018-09-28 20:46:52

标签: java arrays

如果数组的所有数目都增加,如何返回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

有人可以帮助我吗?

2 个答案:

答案 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;
}