[英]Store input data on array
我是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)`
这里有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
}
你快到了。 您正在创建长度为0( new double[0]
)的数组,必须使用输入值numStudents
创建数组:
double grades[] = new double[numStudents]; // You must specify the length inside []
请注意,您必须在numStudents = in.nextInt();
收到输入后才能创建数组numStudents = in.nextInt();
另外,请记住,Java中的索引从0
开始,因此for
循环应从0开始并以numStudents - 1
结尾。 换句话说, i < numStudents
:
for (int i = 0; i < numStudents; i++) {
... // modify the necessary
}
首先,为什么要这样做:
double grades[]= new double[0];
↑
这不是数组的默认值,而是它的大小,您应该将其固定为要存储的等级数。 因为数组只能包含0个元素,所以您将获得异常 。
其次,数组在Java中是从零开始的 。 这条线
for (int i = 1;i<=numStudents;i++){
应该
for (int i = 0;i<numStudents;i++){
↑ ↑
下面的语句是有问题的,它将创建一个包含0个元素的数组:
double grades[]= new double[0];
而是使用这个:
double grades[]= new double[numStudents];
请修改您的代码:
double grades[]= new double[numStudents];
并将for
命令更改为此
for (int i = 1;i < numStudents;i++){
}
循环出outofbound
与您的代码进行比较:
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;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.