1

我正在寻求一些帮助来利用 Java 中另一个类的方法。我创建了一个具有一些 getter 和 setter 方法的类。getter 方法包​​含一个 switch 语句,该语句具有一个传入的参数“i”,该参数确定 switch 语句的大小写。

现在在我的主程序中,我希望使用该类方法,但由于某种原因,我得到了 java.lang.nullpointerexception。

我的主程序中的代码如下所示:

public class Hangman extends ConsoleProgram {

    public void run() {

        String name = word.getWord(5);

        println(name);
    }



    /* Private Instance Variable */
    private HangmanLexicon word; // Creates a new lexicon from the HangmanLexicon class.
    private RandomGenerator rgen = RandomGenerator.getInstance(); // Creates a new random generator instance.

}

所以你可以说我创建了私有 ivar,但由于某种原因它不起作用。任何帮助都会很棒!谢谢!

4

4 回答 4

1

在您显示的代码中,word从未给过一个值,因此它将是null

你可能需要类似的东西:

 private HangmanLexicon word = new HangmanLexicon();

或者您可能需要获取一个 HangmanLexicon 对象以其他方式放入您的实例变量中。

注意如果您是为斯坦福 CS 课程(或类似的大学课程)执行此操作,我通过搜索在线找到了 HangmanLexicon 的来源。如果且仅当这与我找到的代码相同时,上面的行才会起作用。

于 2013-02-15T23:55:10.280 回答
1

创建变量 us 还不够:您还必须为它分配一些东西。

private HangmanLexicon word = /*put something here*/;
于 2013-02-15T23:55:20.813 回答
1

您还没有初始化word变量。所以它有默认值:null。并且在空对象上调用方法会导致 NullPointerException。

阅读一本关于 Java 的好书,或者Java 教程。这是您需要了解的基本内容。

于 2013-02-15T23:55:54.430 回答
1

发生的原因NullPointerException是因为 word 没有分配值。word在使用它调用方法之前,您必须先赋值getWord(5)

private HangmanLexicon word;
                        ^

像这样初始化或分配单词,如下所示

private HangmanLexicon word=new HangmanLexicon();
于 2013-02-15T23:56:49.327 回答