0

私はJavaを学ぼうとしていて、簡単な計算機を作ろうとしています。どういうわけか私はNullPointerException自分のに乗っていTextField.setText()ます。

これが私のコードです:

public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new CalcUI().setVisible(true);
        }
    });

    Calc c = new Calc();
    c.setVals(2,2,'+');
    result = c.doCalc();
    //need to setText(String.valueOf(c.doCalc()))
    txtScreen.setText(""+result);
    System.out.println(result);

}

そして私の2番目のクラスのCalcでは:

    //sets values from calc GUI to local class vars
public void setVals(double n1, double n2, char c){
    NUM1=n1;
    NUM2=n2;
    CHAR=c;
}

//do the math
public double doCalc(){
    switch (CHAR){
        case '+':
            RESULT = NUM1+NUM2;
            break;
    }

    return RESULT;
}

さて...だから私はそれを送ってvalues(2,2)、それをc.doCalc()返します4。印刷しSystem.out.println(result)ます4txtScreen.setText(""+result);、nullポインタ例外が発生します。

何か助けはありますか?

4

3 に答える 3

2

フィールドを使用する前に初期化する必要があります。

 txtScreen = new JTextField();
于 2011-01-20T17:23:30.370 に答える
1

Java、さまざまなリリースに既存のバグがあります。私の場合、私は持っていbuild 1.6.0_25-b06ます。渡す文字列JTextPane.setText()は間違いなくnullではありませんが、setText()特にリロード時にNPEを取得します。html でトリッキーですが、テキストを少し変更すると NPE は回避されますが、不安な気持ちが残ります。

というタイトルで公開されている回避策がありHTMLEditorKit throws NullPointerException when reloaded.ます。 http://forums.oracle.com/forums/thread.jspa?threadID=1773568&tstart=0ParserDelegate{}setText()

于 2011-05-05T20:34:16.887 に答える
1

txtScreen を値で初期化していません。

次のようなものが必要です:

txtScreen = new JTextArea();

初期化する場所にコードを投稿してみてください。

于 2011-01-20T17:21:25.720 に答える