【发布时间】:2018-02-23 09:10:49
【问题描述】:
我是编程初学者,所以请多多包涵,我正在尝试使用 KeyListener 制作一个计算器,这就是我所拥有的(剪切代码)
public void keyPressed(KeyEvent e){
int code = e.getKeyCode();
System.out.println(" Code: " + KeyEvent.getKeyText(code));
if(KeyEvent.VK_ADD == e.getKeyCode()){
tmp = Double.parseDouble(txtDisplay.getText());
txtDisplay.setText(display);
add = true;
}
if(KeyEvent.VK_DIVIDE == e.getKeyCode()){
tmp = Double.parseDouble(txtDisplay.getText());
txtDisplay.setText(display);
div = true;
}
if(KeyEvent.VK_SUBTRACT == e.getKeyCode()){
tmp = Double.parseDouble(txtDisplay.getText());
txtDisplay.setText(display);
sub = true;
}
if(KeyEvent.VK_MULTIPLY == e.getKeyCode()){
tmp = Double.parseDouble(txtDisplay.getText());
txtDisplay.setText(display);
mul = true;
}
if(e.getKeyCode()==KeyEvent.VK_BACK_SPACE){
txtDisplay.setText("");
tmp = 0;
toSolve = 0;
}
if(e.getKeyCode() == KeyEvent.VK_ENTER){
toSolve = Double.parseDouble(txtDisplay.getText());
if( add == true ){
toSolve = tmp + toSolve;}
else if ( sub == true ){
toSolve = tmp - toSolve;}
else if ( mul == true ){
toSolve = tmp * toSolve;}
else if ( div == true ){
toSolve = tmp / toSolve;}
txtDisplay.setText(Double.toString( toSolve ));
add = false ;
sub = false ;
mul = false ;
div = false ;
}
}
我希望它执行操作,但是当我运行它时,它似乎只是在做加法。我认为这可能在我的编程逻辑中。另外,如何删除文本字段中的操作符号,因为它还会转换符号,因此会引发异常。
【问题讨论】:
-
可能你使用了错误的键常量。尝试使用
VK_SLASH代替VK_DIVIDE和VK_MINUS代替VK_SUBTRACT -
不走运,没用。
-
1) 为了尽快获得更好的帮助,请发帖 minimal reproducible example 或 Short, Self Contained, Correct Example。 2)另见calculator example。它使用
ScriptEngine来评估文本字段中的表达式。
标签: java swing keylistener