将输入数据存储在阵列上

时间:2014-02-23 06:42:06

标签: java

我是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)`

6 个答案:

答案 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;
    }
}