我的任务是编辑以下代码以使用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循环没什么经验。
答案 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));获取列表长度的行。