我不是一名程序员,而且我的代码一直存在问题。 我收到错误:
`java.lang.ArrayIndexOutOfBoundsException: 0`
一些帮助将不胜感激。谢谢。
我的代码:
import java.util.Scanner;
public class Gradebook1D {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int[] id = new int[0];
double[] quiz1 = new double[0];
double[] quiz2 = new double[0];
double[] quiz3 = new double[0];
int idStudent = 0;
System.out.print("Enter how student's are in your class: ");
idStudent = input.nextInt();
double[] sum = new double[0];
for (int i = 0; i < idStudent; i++){
System.out.println("Enter student ID: ");
id[i] = input.nextInt();
System.out.print("\n Enter score for Quiz1: ");
quiz1[i] = input.nextInt();
System.out.print("\n Enter score for Quiz2: ");
quiz2[i] = input.nextInt();
System.out.print("\n Enter score for Quiz3: ");
quiz3[i] = input.nextInt();
sum[i] = quiz1[i] + quiz2[i] + quiz3[i];
}
}
}
答案 0 :(得分:2)
使用id
初始化quiz1
,quiz2
,quiz3
,idStudent
int[] id = new int[idStudent];
double[] quiz1 = new double[idStudent];
double[] quiz2 = new double[idStudent];
double[] quiz3 = new double[idStudent];
该错误的原因是您声明数组为零的数组。你不能将元素插入到零大小的数组
答案 1 :(得分:1)
不是最好的Java程序员,但我几乎肯定你用[0]将数组大小设置为0。
int [ ] nums = new int [ 8 ];
for(int ctr = 0; ctr < 8; ctr++)
{
//logic here
}
将是如何做正确数组的一个例子。
答案 2 :(得分:1)
初始化数组时,必须指定其长度。当你这样做
int[] id = new int[0];
您指定该数组的长度为0
。所以你甚至无法访问它的第一个元素(使用id[0]
)
您可以按照以下方式对其进行初始化
int[] id = new int[4]; // length 4
但是因为你得到的输入代表了学生的数量,我想这将是数组的长度:
int[] id = new int[idStudent];
但是,收到输入后,您必须
。答案 3 :(得分:1)
您正在分配一个大小为0的数组。因此,没有&#34;插槽&#34;在数组中,所以当你尝试引用一个插槽时,它会越界。如果你想要一个灵活的&#34; size array,您可以轻松添加元素,而是使用ArrayList。
答案 4 :(得分:1)
在执行new int[0]
,新的double [0]等时,您将从零大小的数组开始...尝试在知道需要多长时间后设置数组大小:
Scanner input = new Scanner(System.in);
System.out.print("Enter how student's are in your class: ");
int idStudent = input.nextInt();
int[] id = new int[idStudent];
double[] quiz1 = new double[idStudent];
double[] quiz2 = new double[idStudent];
double[] quiz3 = new double[idStudent];
double[] sum = new double[idStudent];
for (int i = 0; i < idStudent; i++){
//Now all arrays have size idStudent so 'i' will be in bounds
}
答案 5 :(得分:0)
使用此
int[] id = new int[size thats you require];
而不是
int[] id = new int[0];
希望你能得到你的解决方案