Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 机智';s以NullPointerException结尾_Java_Nullpointerexception - Fatal编程技术网

Java 机智';s以NullPointerException结尾

Java 机智';s以NullPointerException结尾,java,nullpointerexception,Java,Nullpointerexception,所以,我的任务是编写一个程序,接受学生姓名和成绩,并利用多个数组。我已经以不同的方式多次重写了抛出运行时错误的代码部分,但是使用了相同的NullPointerException错误。我已经运行了将数组内容打印到控制台的测试,但还没有看到它返回“null”。所以我在这里迷路了 错误: Exception in thread "main" java.lang.NullPointerException at GradeBook.setScoreArray(GradeBook.java:41)

所以,我的任务是编写一个程序,接受学生姓名和成绩,并利用多个数组。我已经以不同的方式多次重写了抛出运行时错误的代码部分,但是使用了相同的NullPointerException错误。我已经运行了将数组内容打印到控制台的测试,但还没有看到它返回“null”。所以我在这里迷路了

错误:

Exception in thread "main" java.lang.NullPointerException
    at GradeBook.setScoreArray(GradeBook.java:41)
    at GradeBookApp.main(GradeBookApp.java:72)
GradeBookApp(主应用程序):

import java.util.Scanner;
导入java.util.array;
公共类GradeBookApp
{
公共静态void main(字符串[]args)
{
//常数
最终学生人数=2人;
最终int NUM_分数=4;
//变数
双倍平均值;
碳聚酯薄膜;
我的学生;
//阵列
double[]scoreArray=新的double[NUM_学生][NUM_分数];
String[]studentArray=新字符串[NUM_STUDENTS];
//初始化扫描仪
扫描仪键盘=新扫描仪(System.in);
对于(int n=0;n100 | |计分员<0)
{
System.out.println(“***分数必须仅为0-100!***”);
}
}而(计分员>100 | |计分员<0);
记分数组[i][s]=记分人;
//System.out.println(计分员+”添加到位置“+i+”、“+s”);
}
System.out.println(“”);
}
System.out.println(Arrays.deepToString(scoreArray));//这可以按预期工作
成绩册我的成绩册=新成绩册(NUM_分数,NUM_学生);
对于(int index=0;index
成绩册(班级):

公共班级成绩册{
私有字符串[]学生姓名;
private char[]letterGrades={'A','B','C','D','F'};
私人双[]学生分数;
私立国际学生;
私人国际货币基金组织;
公共成绩册(整数分数,整数学生)
{
numStudents=NUM_学生;
numcores=NUM_分数;
}
公共无效设置学生阵列(字符串学生)
{
//设置学生数组
对于(int i=0;i=0&&平均值<60)
{
字母=字母等级[4];
}
否则如果(平均值>60和平均值<70)
{
字母=字母等级[3];
}
否则如果(平均值>70和平均值<80)
{
字母=字母等级[2];
}
否则如果(平均值>80和平均值<90)
{
字母=字母等级[1];
}

否则,如果(average>90&&average您使用
private double[]]studentScores;
声明
studentScores
,但您不在任何地方进行初始化。在您初始化它之前,它是一个空指针。当您知道它的维度时,可以在构造函数中执行此操作:

studentScores = new double[numStudents][numScores];

<>代码>学生> 是如何初始化的?考虑提供一个演示你的问题的代码。这不是一个代码转储,而是你正在做的一个例子,它突出了你所面临的问题。这将导致更少的混乱和更好的响应。你初始化<代码>学生成绩< /代码>,因为如果这是一个<代码>空。
,显然您无法访问
[i]
…将整个类视为引用是最有用的,其他地方可能有不正确的地方导致这里的标记。每当您发布关于获取异常的内容时,总是,总是,总是发布堆栈跟踪。谢谢
public class GradeBook {

    private String[] studentNames;
    private char[] letterGrades = { 'A', 'B', 'C', 'D', 'F' };
    private double[][] studentScores;
    private int numStudents;
    private int numScores;


    public GradeBook(int NUM_SCORES, int NUM_STUDENTS)
    {
        numStudents = NUM_STUDENTS;
        numScores = NUM_SCORES;
    }


    public void setStudentArray(String students)
    {
        //set the student array
        for (int i = 0; i < numStudents; i++)
        {
            studentNames[i] = students;
        }
    }

    public void setScoreArray(double scores)
    {
        //for each student...
        for (int i = 0; i < numStudents; i++)
        {
            //set each individual score
            for (int s = 0; s < numScores; s++)
            {
                studentScores[i][s] = scores;
            }
        }
    }

    public String getStudentName(int pos)
    {
        return studentNames[pos];
    }

    public double getGradeAvg(int pos)
    {
        double total = 0;
        double avg = 0;

        //use the position variable to iterate over the correct test scores...
        for (int i = 0; i < numScores; i++)
        {
            total += studentScores[pos][i];
        }

        avg = total / numScores;
        return avg;
    }

    public char getLetterGrade(double average)
    {
        char letter = 'Z';

        if (average >= 0 && average < 60)
        {
            letter = letterGrades[4];
        }
        else if (average > 60 && average < 70)
        {
            letter = letterGrades[3];
        }
        else if (average > 70 && average < 80)
        {
            letter = letterGrades[2];
        }
        else if (average > 80 && average < 90)
        {
            letter = letterGrades[1];
        }
        else if (average > 90 && average <= 100)
        {
            letter = letterGrades[0];
        }

        return letter;
    }



}
studentScores = new double[numStudents][numScores];