我正在尝试学习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);
}
在我的第二节课中:
//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);
会导致空指针异常。
任何帮助?
答案 0 :(得分:2)
您需要在使用之前初始化该字段。
txtScreen = new JTextField();
答案 1 :(得分:1)
您尚未使用值初始化txtScreen。
你需要这样的东西:
txtScreen = new JTextArea();
尝试在初始化时发布代码。
答案 2 :(得分:1)
Java中存在n个错误,各种版本。就我而言,我有build 1.6.0_25-b06
。传递给JTextPane.setText()
的字符串绝对不是空的,但是我在setText()
内获得了一个NPE - 特别是在重新加载时。它是html,而且很棘手,但改变文本会略微阻止NPE,但会留下一种不安的感觉。
在标题HTMLEditorKit throws NullPointerException when reloaded.
下发布了一种解决方法。解决方法在ParserDelegate{}
为我工作之前实例化了一个(未使用过的)setText()
。
http://forums.oracle.com/forums/thread.jspa?threadID=1773568&tstart=0