0

我正在尝试制作一个应用程序,要求用户输入数组中的项目数,然后要求他们用整数填充该数组。之后,打印出来。

当我运行它时,它要求我输入,然后给我:

线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException: 10 at main.main(main.java:13)

import java.util.Scanner;

public class main {
public static void main(String [] args){
    Scanner scan = new Scanner(System.in);
    System.out.println("Input number of units in array: ");
    int i1 = scan.nextInt();
    int[] arrayOne= new int[i1];

    for(int i=0 ; i<=i1 ; i++){

        System.out.println("Enter " + i + " unit in array.");
        arrayOne[i] = scan.nextInt();

    }


    System.out.println(arrayOne);


}

}

你们能帮我找出我的错误在哪里吗?我尝试了一些不同的东西,但似乎没有任何效果。

谢谢!

4

2 回答 2

5

数组是从零开始的。在这里,您超出了上限。代替:

for (int i = 0; i <= i1; i++) {

for (int i = 0; i < i1; i++) {

还要使用Arrays#toString来显示数组内容,否则会显示数组的Object#toString表示:

System.out.println(Arrays.toString(arrayOne));
于 2013-05-11T00:12:55.103 回答
0

您的代码似乎每次在循环中都需要进行新的扫描。

您还进行了太多的迭代(与数组的大小相比)。

可能这段代码会更好地工作:

import java.util.Scanner;

public class Main 
{
    public static void main(String [] args)
    {
        Scanner scan = new Scanner(System.in);
        System.out.println("Input number of units in array: ");
        int i1 = scan.nextInt();
        int[] arrayOne= new int[i1];
        for(int i=0 ; i<i1 ; i++)
        {
            System.out.println("Enter " + i + " unit in array.");
            Scanner other_scan = new Scanner(System.in);
            arrayOne[i] = other_scan.nextInt();
        }
        for(int i=0 ; i<i1 ; i++)
        {
            System.out.println("arrayOne["+i+"]: "+arrayOne[i]);
        }       
    }
}
于 2013-05-11T00:47:51.770 回答