输入非Double值时JOptionPane提示框不显示问题求助
问题原因及解决方法
你的问题根源很直接:可能抛出异常的Double.parseDouble()代码写在了try块外面,当输入非数字字符串时,这个方法抛出的NumberFormatException根本没被后面的try-catch捕获,直接向外抛出,自然弹不出错误提示框。
修改后的代码
把Double.parseDouble()移到try块内部,让异常能被正确捕获:
@Override public void actionPerformed(ActionEvent e){ if(e.getSource() == back){ frame.dispose(); home h = new home(); } //rent button if(e.getSource() == rent){ double money = 0; try{ // 将parseDouble移入try块,异常才能被捕获 money = Double.parseDouble(txtinsertmoney.getText()); if(blackadam.isSelected()){ money = money - 1009.00; } if(up.isSelected()){ money = money - 212.00; } if(terminator.isSelected()){ money = money - 220.00; } if(justiceleague.isSelected()){ money = money - 1100.00; } if(yourname.isSelected()){ money = money - 1200; } if(starwars.isSelected()){ money = money - 275; } if(demonslayer.isSelected()){ money = money - 1100; } if(madmax.isSelected()){ money = money - 825; } if(topgun.isSelected()){ money = money - 220; } if(predator.isSelected()){ money = money - 400; } if(nul.isSelected()){ money = money - 220; } txtchange.setText(Double.toString(money)); } catch(NumberFormatException ex){ JOptionPane.showMessageDialog(frame,"ERROR","ERROR",JOptionPane.ERROR_MESSAGE ); } } }
另外提一句:原代码里的else分支逻辑有问题,它只和最后一个if(nul.isSelected())配对,并非你想要的“未选中任何选项时执行”,建议直接删掉这个else,在所有if判断结束后统一设置txtchange的内容即可。
内容的提问来源于stack exchange,提问作者Watatops
相关产品推荐
相关产品推荐

