繁体   English   中英

将输入数据存储在数组上

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM