Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将这个for循环转换为while循环?_Java_Arrays_For Loop_While Loop - Fatal编程技术网

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++;
}