Java 如何将这个for循环转换为while循环?
我正在创建一个数组程序。我正在练习如何将Java 如何将这个for循环转换为while循环?,java,arrays,for-loop,while-loop,Java,Arrays,For Loop,While Loop,我正在创建一个数组程序。我正在练习如何将for循环转换为while循环,但我无法掌握这个概念 如果我有for循环: int [] list = new int [5]; for (int i = 0; i < 5; i++) { list [i] = i + 2; } 这是我认为应该做的,但这在我的电脑里是一个错误 线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:5位于Arrays2.main(Arrays2.java:
for
循环转换为while
循环,但我无法掌握这个概念
如果我有for
循环:
int [] list = new int [5];
for (int i = 0; i < 5; i++) {
list [i] = i + 2;
}
这是我认为应该做的,但这在我的电脑里是一个错误 线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:5位于Arrays2.main(Arrays2.java:21) 这是21号线
System.out.print(list[i] + " ");
基本for语句的一般结构为:
for ( ForInit ; Expression ; ForUpdate ) Statement
是初始值设定项。首先运行它来设置变量等ForInit
是一个布尔条件,用于检查是否应运行表达式
语句
是在语句
为true时要运行的代码块表达式
在ForUpdate
语句之后运行,例如根据需要更新变量
ForUpdate
后,将再次计算表达式。如果仍然为true,则再次执行语句
,然后执行ForUpdate
;重复此操作,直到表达式
为false
您可以将其重新构造为while循环,如下所示:
ForInit;
while (Expression) {
Statement;
ForUpdate;
}
为了将此模式应用于“真实”for循环,只需如上所述替换块即可
对于上面的示例:
=>ForInit
inti=0
=>表达式
i<5
=>ForUpdate
i++
=>语句
列表[i]=i+2代码>
int i = 0;
while (i < 5) {
list[i] = i + 2;
i++;
}
inti=0;
而(i<5){
列表[i]=i+2;
i++;
}
您的while
循环运行良好,但在循环结束后,i
的值为5
。由于java数组总是从零开始索引,list[5]
不存在,访问它会引发异常
这就是您在打印
System.out.print(list[i]+“”)时看到的代码>只需打印任何其他元素,列表[1]
,列表[4]
或列表[0]
例如。首先,将其设置为有效的for循环。现在请描述为什么它没有达到预期效果。“但它在我的计算机中显示为错误”什么错误?看起来不错。请阅读错误消息。它告诉您错误在第21行。它告诉您错误的索引是5(这是正确的,因为长度为5的数组的最后一个索引是4),并告诉您错误是ArrayIndexOutOfBoundsException:该名称是自解释的,但您可以浏览该类的javadoc以了解其含义。这应该足以让你找到你的错误。打印代码是否在增量之后???
for ( ForInit ; Expression ; ForUpdate ) Statement
ForInit;
while (Expression) {
Statement;
ForUpdate;
}
int i = 0;
while (i < 5) {
list[i] = i + 2;
i++;
}