zwguo1008
发贴: 2
积分: 0
|
于 2007-11-01 10:19
本人想编个简单的计算器,可老有个异常,寻求好心人帮解决一下,不要在源程序上有大的改动哦,谢谢了 程序如下: import java.awt.*; import javax.swing.*; import java.awt.event.*; public class jisuanqi extends JFrame implements ActionListener { JTextField displaytext=new JTextField(30); String[] keys={"1","2","3","+","4","5","6","-","7","8","9","*","0",".","=","/","C"}; JButton[] Button; String numstr1; String numstr2; char op; boolean firstinput=true; public jisuanqi() { setTitle("我的计算器"); setSize(260,200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); GridLayout layout=new GridLayout(3,1,10,10); JPanel row1=new JPanel(); row1.add(displaytext); add(row1); GridLayout layout1=new GridLayout(4,4,10,10); JPanel row2=new JPanel(); row2.setLayout(layout1); for(int index=0;index<16;index++) { Button[index]=new JButton(keys[index]); Button[index].addActionListener(this); Button[index].setSize(50,30); row2.add(Button[index]); } add(row2); JPanel row3=new JPanel(); Button[16]=new JButton(keys[16]); Button[16].addActionListener(this); row3.add(Button[16]); add(row3); setVisible(true); } public void actionPerformed(ActionEvent e) { String resultstr; String str=e.getActionCommand(); char ch; ch=str.charAt(0); switch(ch) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case '.': if(firstinput) { numstr1=numstr1+ch; displaytext.setText(numstr1); } else { numstr2=numstr2+ch; displaytext.setText(numstr2); } break; case '+': case '-': case '*': case '/': op=ch; firstinput=false; break; case '=': resultstr=jisuan(); displaytext.setText(resultstr); numstr1=resultstr; numstr2=""; break; case 'C': displaytext.setText("0."); numstr1=""; numstr2=""; break; } } public String jisuan() { try { double A= Double.valueOf(numstr1); double B= Double.valueOf(numstr1); double result=0.0; switch(op) { case '+': result=A+B; break; case '-': result=A-B; break; case '*': result=A*B; break; case '/': result=A/B; break; } return String.valueOf(result); } catch(ArithmeticException e) { return "错误"+e.getMessage(); } catch(NumberFormatException e) { if(numstr1.equals("")) return "错误:第一个数不可用"; else return "错误:第二个数不可用"; } catch(Exception e) { return "错误"; } } public static void main(String[] args) { jisuanqi myjisuanqi=new jisuanqi(); } }
|