gpt4 book ai didi

java - 获取学生详细信息并显示

转载 作者:行者123 更新时间:2023-12-02 01:18:36 25 4
gpt4 key购买 nike

我是 Java 新手,在这项作业中需要帮助。它向我显示错误 arrayindexoutofbound。

我尝试在不使用对象的情况下更改它,但它也显示错误

import java.util.Scanner;
public class Result {

int n;
int [] rollno = new int[n];
int [] marks = new int[n];
String [] name = new String[n];

Result()
{
rollno[n] = 0;
marks[n] = 0;
name [n] = "NA";

}
public static void main(String[] args) {


Scanner cin = new Scanner(System.in);
Result BSCS = new Result();

System.out.println("ENter number of students ");
BSCS.n = cin.nextInt();

for(int i =1; i<=BSCS.n; i++)
{
System.out.println("Enter Name of " + i + " student");
BSCS.name[i] = cin.next();

System.out.println("Enter RollNO of " + i + " student");
BSCS.rollno[i] = cin.nextInt();

System.out.println("Enter Marks of " + i + " student");
BSCS.marks[i] = cin.nextInt();
}


System.out.println("|No\t|Name\t|RollNo\t|Marks ");
for(int j =1; j<=BSCS.n; j++)
{

System.out.println("|" + j + "\t|" + BSCS.name[j] + "\t|" + BSCS.rollno[j] + "\t|" + BSCS.marks[j]);

}
}
}

显示以下错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at Result.<init>(Result.java:15) at Result.main(Result.java:35)

最佳答案

您必须将 n 变量初始化为特定数字(因为您使用的是数组而不是列表),例如:

// create records for 10! students
int n = 11;

然后在构造函数中将 n 更改为 n-1:

Result()
{
rollno[n-1] = 0;
marks[n-1] = 0;
name [n-1] = "NA";

}

说明:

当开始时没有初始化n时,n = 0。这意味着您正在尝试创建一个长度为零的数组,例如int[]rollno = new int[0];。这很好,直到您尝试在构造函数中将数组值设置为零 - 您会收到错误,因为您无法访问数组的任何值 - rollno[0] = 0 表示将第一个数组单元设置为 0,但你的数组是空的!

接下来,您认为使用 BSCS.n = cin.nextInt(); 您将能够设置 n 的值并设置学生数量。当然可以,但是在您已经创建大小为 0 的 rollno、marks 和 name 数组之前使用 Main BSCS = new Main(); 行。因此,BSCS.n = cin.nextInt (); 实际上在设置 rollno、marks 和 name 数组的大小方面没有任何作用。因此,如果n在一开始就没有设置,那么所有的数组仍然是空的。

通过在开始时初始化n,您可以创建具有适当大小的数组rollno、marks和name。您必须使用 n-1,因为我们从零开始计数,例如 rollno[10] 将超出范围。

关于java - 获取学生详细信息并显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58154895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com