【问题标题】:Why does this array initializer throw a NullPointerException? [closed]为什么这个数组初始值设定项会抛出 NullPointerException? [关闭]
【发布时间】:2014-05-27 02:15:07
【问题描述】:

我目前正在学习 Java,我想知道为什么这段代码会在下面指示的行抛出 NullPointerException。 Question对象是一个用户自定义的类,初始化对象时接受两个字符串作为参数。

public class QuizTime
{
    public static void main (String[] args)
    {
            Quiz qz = new Quiz();

            // Throws a NullPointerException
            qz.add (new Question ("How may US states are there?", "50"));
    }
}

下面是支持类。 NullPointerException 还表明“quiz[count] = q;”这一行存在问题

import java.util.Scanner;

public class Quiz
{   
    private Question[] quiz;
    private int count;
    private final int MAX_QUESTIONS = 25;

    public void Quiz ()
    {
            quiz = new Question[MAX_QUESTIONS];
            count = 0;
    }

    public void add (Question q)
    {
            if (count < MAX_QUESTIONS)
            {
                    // Throws a NullPointerException
                    quiz[count] = q;
                    count++;
            }
    }

【问题讨论】:

    标签: java arrays nullpointerexception


    【解决方案1】:
    public void Quiz ()
    

    应该是

    public Quiz() 
    

    为了被视为构造函数并正确初始化您的对象。否则,它是您尚未调用的方法。

    【讨论】:

    • 哇,这对我来说是一个愚蠢的错误。我真的是这方面的初学者。谢谢,做到了!
    • @BML0309 将来,出于调试目的,您应该在代码中添加日志语句,以查看它实际做了什么,它采用了什么执行路径。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-18
    • 2013-09-09
    • 1970-01-01
    • 2014-12-18
    相关资源
    最近更新 更多