import java.awt.*;
import java.awt.event.*;
public class Caculator1
{
    public static void main(String args[])
    {
        new TFrame().launchFrame();
    }
}
class TFrame extends Frame
{
    String sFirst,sLast;
    int i=0;    TextField num1;
    Button b1,b2,b3,b4,b5,b6,b7,b8,b9,b0,bplus,bdiv,bdel,badd,bequal,bpoint;
    public void launchFrame()
    {
        //初始化文本框
        num1 = new TextField(" ",40);
        
        Panel p = new Panel();
        //初始化按钮
        b1 = new Button("1");
        b2 = new Button("2");
        b3 = new Button("3");
        b4 = new Button("4");
        b5 = new Button("5");
        b6 = new Button("6");
        b7 = new Button("7");
        b8 = new Button("8");
        b9 = new Button("9");
        b0 = new Button("0");
        bplus = new Button("*");
        bdiv = new Button("/");
        bdel = new Button("-");
        badd = new Button("+");
        bequal = new Button("=");
        bpoint = new Button("."); 
        //设置布局,使用网格布局
        p.setLayout(new GridLayout(4,4));
        p.add(b1);      
        p.add(b2);
        p.add(b3);
        p.add(bplus);
        p.add(b4);
        p.add(b5);
        p.add(b6);
        p.add(bdiv);
        p.add(b7);
        p.add(b8);
        p.add(b9);
        p.add(badd);
        p.add(b0);
        p.add(bdel);
        p.add(bpoint);
        p.add(bequal);
        add(num1,"North"); 
        add(p,"Center");
        //设置窗体名称
        setTitle("MyCaculator");
        //setBounds(400,500);
        pack();
        setVisible(true);
        
        
        b1.addActionListener(new b1Monitor());
        b2.addActionListener(new b2Monitor());
        b3.addActionListener(new b3Monitor());
        b4.addActionListener(new b4Monitor());
        b5.addActionListener(new b5Monitor());
        b6.addActionListener(new b6Monitor());
        b7.addActionListener(new b7Monitor());
        b8.addActionListener(new b8Monitor());
        b9.addActionListener(new b9Monitor());
        b0.addActionListener(new b0Monitor());
        bplus.addActionListener(new bplusMonitor());
        bdiv.addActionListener(new bdivMonitor());
        badd.addActionListener(new baddMonitor());
        bdel.addActionListener(new bdelMonitor());
        bequal.addActionListener(new bequalMonitor());     }   
     //为每一个按钮设置事件监听器
     class b1Monitor implements ActionListener
     {
          public void actionPerformed(ActionEvent e)
          {
              String s = num1.getText();
              num1.setText(s+b1.getLabel());  
          }
     } 
     class b2Monitor implements ActionListener
     {
          public void actionPerformed(ActionEvent e)
          {
              String s = num1.getText();
              num1.setText(s+b2.getLabel());  
          }
     }
     class b3Monitor implements ActionListener
     {
          public void actionPerformed(ActionEvent e)
          {
              String s = num1.getText();         
              num1.setText(s+b3.getLabel());  
          }
     }
     class b4Monitor implements ActionListener
     {
          public void actionPerformed(ActionEvent e)
          {
              String s = num1.getText();
              num1.setText(s+b4.getLabel());  
          }
     }
     class b5Monitor implements ActionListener
     {
          public void actionPerformed(ActionEvent e)
          {
              String s = num1.getText();
              num1.setText(s+b5.getLabel());  
          }
     }
     class b6Monitor implements ActionListener
     {
          public void actionPerformed(ActionEvent e)
          {
              String s = num1.getText();
              num1.setText(s+b6.getLabel());  
          }
     }
     class b7Monitor implements ActionListener
     {
          public void actionPerformed(ActionEvent e)
          {
              String s = num1.getText();
              num1.setText(s+b7.getLabel());  
          }
     }
     class b8Monitor implements ActionListener
     {
          public void actionPerformed(ActionEvent e)
          {
              String s = num1.getText();
              num1.setText(s+b8.getLabel());  
          }
     }
     class b9Monitor implements ActionListener
     {
          public void actionPerformed(ActionEvent e)
          {
              String s = num1.getText();
              num1.setText(s+b9.getLabel());  
          }
     }
     class b0Monitor implements ActionListener
     {
          public void actionPerformed(ActionEvent e)
          {
              String s = num1.getText();
              num1.setText(s+b0.getLabel());  
          }
     }    
     class bplusMonitor implements ActionListener
     {
          public void actionPerformed(ActionEvent e)
          {
              sFirst = num1.getText();
              num1.setText(" ");
              System.out.println(sFirst);
              i=1;
          }
     }
     class bdivMonitor implements ActionListener
     {
          public void actionPerformed(ActionEvent e)
          {
              sFirst = num1.getText();
              num1.setText(" ");
              System.out.println(sFirst);
              i=2;
          }
     }
     class baddMonitor implements ActionListener
     {
          public void actionPerformed(ActionEvent e)
          {
              sFirst = num1.getText();
              num1.setText(" ");
              System.out.println(sFirst);
              i=3;
              System.out.println(i);
          }
     }
     class bdelMonitor implements ActionListener
     {
          public void actionPerformed(ActionEvent e)
          {
              sFirst = num1.getText();
              num1.setText(" ");
              System.out.println(sFirst);
              i=4;
          }
     }
     class bequalMonitor implements ActionListener
     {
          public void actionPerformed(ActionEvent e)
          {
              sLast = num1.getText();
              int n1 = Integer.parseInt(sFirst);
              int n2 = Integer.parseInt(sLast);
              switch(i)
              {
                 case 1: num1.setText("" + (n1*n2)); System.out.println(n1*n2);break;
                 case 2: num1.setText("" + (n1/n2)); System.out.println(n1/n2);break;
                 case 3: num1.setText("" + (n1+n2)); System.out.println(n1+n2);break;
                 case 4: num1.setText("" + (n1-n2)); System.out.println(n1-n2);break;
                 default: break;
              }
          }
     }
     //System.out.println(i);
     //System.out.println(sFirst);
}
编译能够通过,但是运行时出现异常。求指教

解决方案 »

  1.   

    NumberFormatException,你看看你的格式处理正确不
      

  2.   

    这段代码改为:
    public void actionPerformed(ActionEvent e)
      {
      sLast = num1.getText().trim();
      System.out.println("sFirst:" + sFirst);
      sFirst = sFirst.trim();
      int n1 = Integer.parseInt(sFirst);
      int n2 = Integer.parseInt(sLast);主要是加trim()把前后的空格去掉。