For-loop中的Java数组索引超出范围异常

时间:2016-12-14 21:49:01

标签: java arrays for-loop

我正在制作一个程序,对输入的数字运行公式。输入中的第一个整数描述了公式中要使用的行数或整数。我通过计算答案并将它们推入数组来接近这一点。但是,我在一个for循环中得到一个数组超出范围的异常,我无法弄清楚为什么。

这是我的主要方法:

    public static void main(String[] args) {
    Scanner scan = new Scanner (System.in);
    int[] nums = {};
    int lines = scan.nextInt();
    for(int i = 0; i < lines; i++){
        nums[i] = potFormula(scan.next());
    }
    System.out.println(nums);
}

3 个答案:

答案 0 :(得分:4)

数组具有固定大小,一旦分配就无法更改。您正在将nums初始化为{},这是一个空数组。它的大小总是为零。

相反,您可以使用:

int lines = scanner.nextInt();
int[] nums = new int[lines];

答案 1 :(得分:2)

您的数组太小(它的元素为零)。以下是解决此问题的一种方法:

int lines = scan.nextInt();
int[] nums = new int[lines];

这种方法有效,因为您事先知道尺寸。如果没有,您可以使用ArrayList<Integer>。数组列表具有按需增长的能力。

答案 2 :(得分:1)

您需要将nums数组初始化为行的长度,

像这样:

public static void main(String[] args) {
    Scanner scan = new Scanner (System.in);
    int lines = scan.nextInt();
    int[] nums = new int[lines];
    for(int i = 0; i < lines; i++){
        nums[i] = potFormula(scan.next());
    }
    System.out.println(nums);
}