为什么这段代码会引发异常?

时间:2014-01-01 16:31:39

标签: java

我是java新手。运行我的代码时遇到一些异常:

import java.util.Random;

public class Example {
    public static void main(String[] args) {
        Random r = new Random();
        int[] num= new int[5];      

        for (int i= 0; 1<num.length; i++)
        {
            num[i]= r.nextInt(100)+1;
            System.out.println(num[i]);
        }
    }
}

它给了我以下例外:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 at Example.main(Example.java:13)

为什么我会收到此异常?

2 个答案:

答案 0 :(得分:1)

首先,您应该始终复制并粘贴异常文本,保存我们试图猜测它是哪种类型的异常或发生的位置

你将获得ArrayOutOfBoundsIndexException,因为循环是无穷无尽的,但索引总是递增。

for (int i= 0; 1<num.length; i++)

其中一个始终小于length的{​​{1}},因此它会循环播放,每次递增num,直到i大于数组大小。此时你会尝试这样做

i

num[i] ... 将超出界限,抛出异常。

答案 1 :(得分:1)

import java.util.Random;

public class test {
public static void main(String[] args) {

    Random r = new Random();
    int[] num = new int[5];

    for (int i = 0; i < num.length; i++) {
        num[i] = r.nextInt(100) + 1;
        System.out.println(num[i]);
    }

}
}

循环的工作原理如下:

for (initialization; termination; increment) {
    statement(s)
} 

当终止表达式的计算结果为false时,循环终止。在你的情况下,循环永远不会终止。这就是为什么你得到ArrayOutOfBoundsIndexException