为何这Java 程序会死循环

package day10;

public class TestException {
public static void main(String args[]) {
int i = 0;
String greetings[] = { " Hello world !", " Hello World !! ",
" HELLO WORLD !!!" };
while (i < 4) {
try {
// 特别注意循环控制变量i的设计,避免造成无限循环
System.out.println(greetings[i]);
i++;
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("数组下标越界异常");
} finally {
System.out.println("--------------------------");

}
}
}
}

主要你看当i等于3的时候,这个时候greetings[3]已经报了数组越界的错误了,所以不会执行i++,执行到报错了那里了,打印出了数组下标越界异常,所以此时i还是为3,这样就继续循环了,3依然小于4,所以继续取greetings[3],依然不会执行i++


所以根本原因是你设置的上限4不对,改为3即可

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-11-10
while (i < 4) {
try {
// 特别注意循环控制变量i的设计,避免造成无限循环
System.out.println(greetings[i]);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("数组下标越界异常");
} finally {
System.out.println("--------------------------");
}
i++; // 把 i++ 放到这里
}

因为当 i = 3 的时候,就会抛出异常,但是你的代码 i 却没有加1,以至于 i 一直都是 3.

本回答被网友采纳
相似回答