我试图通过从用户那里获取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;
请帮忙
答案 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);
}