从用户获取10个数字并使用Java将其存储在数组中

时间:2015-10-13 20:41:23

标签: java

我试图通过从用户那里获取10个数字并将它们添加到数组来进行练习应用。这是我的代码

public static void getNumber(){
        for(int i=0; i<10; i++){
        Scanner scanner = new Scanner(System.in);
        System.out.println("Enter number " + i );
        int NumbersArray[] = {};
        int no1 = scanner.nextInt();
        NumbersArray[i] = no1;
        System.out.println(NumbersArray);
        }

问题是,在接受第一个值后,它会显示一条错误消息

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
    at Number.getNumber(Number.java:17)
    at Number.main(Number.java:8)

根据我的格式,第8行是

getNumber();

根据我的格式,第17行是

NumbersArray[i] = no1;

请帮忙

5 个答案:

答案 0 :(得分:7)

在这一行:

int NumbersArray[] = {};

您已将其显式初始化为空数组;它相当于new int[0]。你不能在这样的数组中存储任何东西。存储某些内容不会自动为该元素分配数组中的内存。

在使用之前,必须适当调整数组大小,因为Java数组不可调整大小。

int[] numbersArray = new int[10];

虽然int NumbersArray[]完全合法,但按照惯例,括号会转到数据类型,变量名的第一个字母是小写的。

此外,call Arrays.toString可以正确打印您的数组。

答案 1 :(得分:2)

错误解释了问题:您正在尝试访问超出范围的索引的数组。在第17行,您在i=0

的第一次迭代中执行以下操作
NumbersArray[0] = no1;

然而,NumbersArray被实例化为:

int NumbersArray[] = {};

上述意味着您正在创建一个没有分配空间的空数组。相反,请考虑初始化一些空间:

int[] numbersArray = new int[10];

或者更常见的是,请考虑使用ArrayList并将元素添加到其中:

List<Integer> numbers = new ArrayList<>();

for(int i=0; i<10; i++){
    ...
    numbers.add(no1);
}

答案 2 :(得分:2)

您的问题是您打算将de int值作为数组变量。

首先,您不需要在每次迭代中创建新的Scanner对象。

Scanner scanner = new Scanner(System.in);

你需要在循环外声明一个int数组,并告诉他它的长度为10:

int[] numbersArray = new Int[10];

你不应该使用:

System.out.println(NumbersArray);

因为它打印了它的数组的引用标识符,而不是它的内容,所以你必须使用它:

for(int i=0; i < numbersArray.length; i++){
    System.out.println(numbersArray[i]);
}

最后的代码是下一个:

int[] numbersArray = new Int[10];

Scanner scanner = new Scanner(System.in);

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


    System.out.println("Enter number " + i );

    int number = scanner.nextInt();

    numbersArray[i] = number;
}

System.out.println("The numbers are:" );

for(int i=0; i < numbersArray.length; i++){
    System.out.println(numbersArray[i]);
}

答案 3 :(得分:1)

您正在分配一个大小为0的数组。

此外,您要分配数组10次,将其移出循环。

此外,您要创建一个新的Scanner实例10次,您只需要创建一次。

public static void getNumber(){
    int size = 10;
    int NumbersArray[] = new int[size];
    Scanner scanner = new Scanner(System.in);
    for(int i=0; i<size; i++){
        System.out.println("Enter number " + i );
        int no1 = scanner.nextInt();
        NumbersArray[i] = no1;
        System.out.println(NumbersArray);
    }
}

答案 4 :(得分:0)

David Yee和rgettman完全回答了你的问题。我只希望向您展示如何在不使用任何数组的情况下添加10个数字。

public static void getNumber(){
       Scanner scanner = new Scanner(System.in);
       int no1=0;
       for(int i=0; i<3; i++){
           System.out.println("Enter number " + (i+1) );
           no1 += scanner.nextInt();
       }
       System.out.println("Sum = "+no1);
   }