for loop - 在最后一次迭代中,条款无法正常工作

时间:2016-06-06 06:44:15

标签: java arrays algorithm

我无法理解为什么在最后一次迭代12中正在替换14.如果条件只有一个大的器官最大电流数组,那么替换另一个最大值仍然是相同的。

请问可能的解释?

此过程产生当前循环:

max: 1 min: 1
max: 3 min: 1
max: 9 min: 1
max: 10 min: 1
max: 12 min: 1
max: 14 min: 1
max: 12 min: 1

循环:

int result=0;
    int arr[] = { 1, 3, 9,10,12,14,12 };

    for (int i = 0; i < arr.length; i++) {
        int max=arr[0];
        int min=arr[0];
        if(arr[i]>max){
            max=arr[i];

    }
        else if(arr[i]<min){
            min=arr[i];

        }
                System.out.println("max: " + max + " min: "+min);

    }

1 个答案:

答案 0 :(得分:5)

maxmin

的初始化
    int max=arr[0];
    int min=arr[0];

应该在循环之前。否则,您将在循环的每次迭代中覆盖这些变量。

int max=arr[0];
int min=arr[0];
for (int i = 0; i < arr.length; i++) {
    if(arr[i]>max){
        max=arr[i];
    } else if (arr[i]<min) {
        min=arr[i];
    }
    System.out.println("max: " + max + " min: "+min);
}

此代码假定数组不为空。