我正试图打印用户输入的数字,但我得到了一个错误。下面是我的代码:
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int size=0,score=0;
int [] a=new int[size];
int len=a.length;
do
{
System.out.print("Please enter a number between 1 to 5: ");
size=input.nextInt();
}
while ((size<1) || (size>5));
for (int i=1;i<=size;i++)
{
do
{
System.out.print("Enter your "+i+" score (1-100):");
score=input.nextInt();
}
while((score<1) || (score>100));
}
for (int i=1;i<=size;i++)
System.out.println(a[i]+ " ");
}
}
下面是我的输出和错误:请输入1到5:2之间的数字输入你的1分(1-100):54输入你的分数(1-100):64线程"main"中的异常java.lang.ArrayIndexOutOfBoundsException: 1Week08.BigArray2.main (BigArray2.java: 27)
你的代码有四个错误
- 数组初始化为0
- 用户输入未存储在数组
- 从索引1开始迭代,但数组从0开始
-
扫描仪未关闭
Scanner input = new Scanner(System.in); int size = 0, score = 0; do { System.out.print("Please enter a number between 1 to 5: "); size = input.nextInt(); } while ((size < 1) || (size > 5)); int[] a = new int[size]; //1 for (int i = 0; i < size; i++) { do { System.out.print("Enter your " + (i + 1) + " score (1-100):"); score = input.nextInt(); a[i] = score; //2 } while ((score < 1) || (score > 100)); } for (int i = 0; i < size; i++) //3 System.out.print(a[i] + " "); input.close(); //4
Please enter a number between 1 to 5: 4
Enter your 1 score (1-100):99
Enter your 2 score (1-100):98
Enter your 3 score (1-100):97
Enter your 4 score (1-100):96
99 98 97 96
你的代码有几个问题:
- 数组声明为零大小。在java中,数组的大小是在初始化时声明的,以后可以更改。
- 您从未将分数存储到数组中。因此数组为空。
- 在java中迭代数组时总是以0开始循环索引。
下面是修改后的工作程序:
进口java.util.Scanner;
ArrayPrint {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int size = 0, score = 0;
int[] a;
do {
System.out.print("Please enter a number between 1 to 5: ");
size = input.nextInt();
} while ((size < 1) || (size > 5));
//Allocating space to array
a = new int[size];
int len = a.length;
for (int i = 0; i <size; i++) {
do {
System.out.print("Enter your " + i + " score (1-100):");
score = input.nextInt();
a[i] = score;
} while ((score < 1) || (score > 100));
}
for (int i = 0; i <size; i++)
System.out.println(a[i] + " ");
}
}
Please enter a number between 1 to 5: 2
Enter your 0 score (1-100):22
Enter your 1 score (1-100):11
22
11
请查看您的第4行代码int [] a=new int[size];
,此时size=0,并且您已将大小为0的整数数组"a"初始化,但您试图迭代数组"a"最后使用代码for (int i=1;i<=size;i++)
System.out.println(a[i]+ " ");
}
,这导致数组索引超出界限异常。
移动到第一行之后的代码行下面,while循环-:
int[] a = new int[size];
int len = a.length;
现在更正最后一个for循环,如下所示-:
for (int i = 0; i < size; i++)
System.out.println(a[i] + " ");
}
数组的索引从0开始,以size-1结束。