【问题标题】:Why does my program not allow me to assign a value to one of the elements of my array?为什么我的程序不允许我为数组的元素之一赋值?
【发布时间】:2016-03-31 03:18:36
【问题描述】:

我正在尝试为我的数组分配一个双精度变量“gradesInSection”。它不允许我这样做并引发点异常。

void findGrades() {//开始findGrades

    Scanner grades = new Scanner(System.in);
    System.out.println("\nHow many grades do you have?");
    numOfGrades = grades.nextInt();  

    while (numOfGrades > 0)
    {
        numOfGrades = numOfGrades - 1;
        elementForGrade = elementForGrade + 1;

        System.out.println("\nGrade " + elementForGrade + ":");
        Scanner whatGrade = new Scanner(System.in);
        gradesInSection = whatGrade.nextDouble();

        gradeArray[elementForGrade] = gradesInSection;
    }

    for (int i = 0; gradeArray.length > i; i++)
    {
        finalGradeOfSection = gradeArray[i] + finalGradeOfSection;
    }

    finalGradeOfSection = finalGradeOfSection/numOfGrades;

    System.out.println(finalGradeOfSection);

}//End find Grades

【问题讨论】:

  • 哪一行抛出异常?
  • 错觉是什么?
  • gradeArray[elementForGrade] = gradesInSection;
  • gradeArray 分配在哪里?我猜它还不够大。可能是我们的绑定异常,或空指针异常
  • 它在另一个类中。是的,一个 null pinter 异常

标签: java arrays while-loop elements


【解决方案1】:

检查 elementForGrade 不 >= 大于gradeArray.length。我的猜测是这是一个越界异常。

如果是空指针,那么代码需要有

double[] gradeArray = new double[20];

gradeArray = new double[20];

代码中的某处(其中 20 是数组的适当大小)。如果此行不存在,则永远不会分配内存,而将gradeArray 保留为 null

【讨论】:

    猜你喜欢
    • 2022-11-18
    • 2013-05-08
    • 2012-03-06
    • 2020-08-01
    • 1970-01-01
    • 2016-10-11
    • 1970-01-01
    • 2014-05-12
    • 1970-01-01
    相关资源
    最近更新 更多