为什么我的阵列没有输出我的输入?

时间:2013-05-11 00:11:22

标签: java arrays

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

当我跑它时它要求我输入,但随后给我:

线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:10     在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);


}

}

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

谢谢!

2 个答案:

答案 0 :(得分: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));

答案 1 :(得分: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]);
        }       
    }
}