阵列混乱

时间:2014-04-22 05:25:05

标签: java arrays

我不是一名程序员,而且我的代码一直存在问题。 我收到错误:

`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];
    }
  }
}

6 个答案:

答案 0 :(得分:2)

使用id初始化quiz1quiz2quiz3idStudent

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];

希望你能得到你的解决方案