我是java的新手,我想将输入的数据存储在数组中。我的目标是存储学生的成绩。到目前为止,这是我的代码。
import java.util.Scanner;
public class GradesArray {
public static void main (String[]args){
int numStudents = 0;
double grades[]= new double[0];
double gradesStudent;
Scanner in = new Scanner(System.in);
System.out.println("Enter the number of students: ");
numStudents = in.nextInt();
for (int i = 1;i<=numStudents;i++){
System.out.print("Enter the grade of student "+i+" : ");
gradesStudent = in.nextInt();
grades[i]=gradesStudent;
}
}
}
所以我的问题是。我收到这个错误。
`Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at GradesArray.main(GradesArray.java:14)`
答案 0 :(得分:2)
这里有2个问题。第一:
double grades[]= new double[0];
您已将数组大小设为0(new double[0];
)。但是,您询问用户您希望它的大小。所以,当你得到第一个用户输入时,让我们声明这个变量:
System.out.println("Enter the number of students: ");
numStudents = in.nextInt();
double grades[]= new double[numStudents];
其次你的循环错了。 Java为0(而不是1)的数组启动它的索引。假设您有大小为N的数组,则索引为0到N-1。改变你的循环:
for (int i = 1;i<=numStudents;i++){
//code
}
要:
for (int i = 0;i < numStudents;i++){
//code
}
答案 1 :(得分:1)
你快到了。您正在创建一个长度为0(new double[0]
)的数组,您必须使用输入值numStudents
来创建数组:
double grades[] = new double[numStudents]; // You must specify the length inside []
请注意,您必须在收到输入后创建数组
numStudents = in.nextInt();
另外,请记住Java中的索引从0
开始,因此您的for
循环应以0开头并以numStudents - 1
结尾。换句话说i < numStudents
:
for (int i = 0; i < numStudents; i++) {
... // modify the necessary
}
答案 2 :(得分:0)
首先,你为什么这样做:
double grades[]= new double[0];
↑
这是不数组的默认值,它的大小,您应该将其修改为您要存储的成绩数。您将获得异常,因为您的数组只能包含0个元素。
其次,Java中的数组从零开始。这一行
for (int i = 1;i<=numStudents;i++){
应该是
for (int i = 0;i<numStudents;i++){
↑ ↑
答案 3 :(得分:0)
以下语句存在问题,它会创建一个包含0个元素的数组:
double grades[]= new double[0];
而是使用它:
double grades[]= new double[numStudents];
答案 4 :(得分:0)
请编辑您的代码:
double grades[]= new double[numStudents];
并将for
命令更改为此
for (int i = 1;i < numStudents;i++){
}
循环是outofbound
答案 5 :(得分:0)
与您的代码比较:
int numStudents = 0;
double gradesStudent;
Scanner in = new Scanner(System.in);
System.out.println("Enter the number of students: ");
numStudents = in.nextInt();
double grades[]= new double[numStudents];
for (int i = 0;i<=numStudents-1;i++){
System.out.print("Enter the grade of student "+(i+1)+" : ");
gradesStudent = in.nextInt();
grades[i]=gradesStudent;
}
}