使用while循环查找数组中的最大整数

时间:2018-01-17 22:34:37

标签: java arrays max

我的任务是编辑以下代码以使用while循环而不是for循环来查找数组中的最大值。

public static void main(String[] args) {

    int[] numbers = {23, 101, 8, 25, 77, 5};
    int max = 0;
    for(int i=0; i<numbers.length; i++) {
        if (numbers[i] > max) {
            max = numbers[i];
        }
    }

    System.out.println(max);
}

到目前为止,这是我一直在尝试做的事情,并没有提出解决方案。

public static void main(String[] args) {

    int[] numbers = {23,101,8,25,77,5};
    int i = 0;
    int max = numbers[0];
    while(i<=numbers.length) {
        i=i+1;;
        if (numbers[i] > max) {
            max = numbers[i];
        }
    }

如果有人能够让我对我做错了什么有所了解,我将不胜感激。我对while循环没什么经验。

4 个答案:

答案 0 :(得分:1)

稍微更改while条件并将i增量移到实际循环体后面:

while(i < numbers.length) {
    if (numbers[i] > max) {
        max = numbers[i];
    }
    i = i + 1; // or simply i++;
}

答案 1 :(得分:1)

你应该改变的两件事是while-loop的条件,以及i的增量的位置。它应该说

    while(i < numbers.length){
        if(numbers[i] > max) {
            max = numbers[i];
        }
        i = i + 1;
    }

由于索引始终从0开始,因此最终索引等于numbers.length,这要求i比数组长度小1。

此外,由于您正在移动i的增量,因此您可以在开始时将i的值指定为1,因为您已将数字[0]指定为最大值。 希望它有所帮助!

答案 2 :(得分:0)

移除<=循环条件中的while,然后将i递增到循环结束。

while (i < numbers.length) {
        if (numbers[i] > max) {
            max = numbers[i];
        }
        i = i + 1;
}

答案 3 :(得分:-3)

while循环是正确的。删除双分号,因为这是语法错误并使用(sizeof(numbers.length)/ sizeof(int));获取列表长度的行。