質問

私は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番目のクラスでは、計算:

    //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) プリント 4 しかし、私 txtScreen.setText(""+result); ヌルポインターの例外を引き起こします。

何か助けがありますか?

役に立ちましたか?

解決

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

 txtScreen = new JTextField();

他のヒント

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

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

txtScreen = new JTextArea();

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

Javaには既存のバグがあり、さまざまなリリースがあります。私の場合、私は持っています build 1.6.0_25-b06. 。私が渡す文字列 JTextPane.setText() 間違いなくnullではありませんが、私は中にnpeを取得します setText()- 特にリロードで。それはHTMLであり、トリッキーですが、テキストを変更するとNPEがわずかに防止されますが、不安な感覚を残します。

タイトルの下で公開されている回避策があります HTMLEditorKit throws NullPointerException when reloaded. 回避策はインスタンス化されます(未使用) ParserDelegate{} の前に setText() 私のために働いた。http://forums.oracle.com/forums/thread.jspa?threadid=1773568&tstart=0

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top