我是java初学者,尝试做一个简单的计算器,但运行会产生异常,而且得不到运算结果,请各位高手指点...程序如下:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.border.*;
class 布局 extends Frame implements ActionListener
{  TextField text;                                                                                           
   Button button1,button2,button3,button4;
   Button button5,button6,button7,button8;
   Button button9,button10,button11,button12;
   Button button13,button14,button15,button16;
   Panel panel1,panel2;
   Box boxv1,boxv2,boxv3,boxv4;
   Box boxh1,boxh2,boxh3,boxh4;
   Font font=new Font("黑体",Font.BOLD,15);
   布局()
   { setTitle("计算器");
     text=new TextField("0",10);
     Button button1=new Button("7");
            button2=new Button("4");
            button3=new Button("1");
            button4=new Button("0");
            button5=new Button("8");
            button6=new Button("5");
            button7=new Button("2");
            button8=new Button("c");
            button9=new Button("9");
            button10=new Button("6");
            button11=new Button("3");
            button12=new Button("=");
            button13=new Button("+");
            button14=new Button("-");
            button15=new Button("*");
            button16=new Button("/");
     button1.setForeground(Color.blue);
     button2.setForeground(Color.blue);
     button3.setForeground(Color.blue);
     button4.setForeground(Color.blue);
     button5.setForeground(Color.blue);
     button6.setForeground(Color.blue);
     button7.setForeground(Color.blue);
     button8.setForeground(Color.red);
     button9.setForeground(Color.blue);
     button10.setForeground(Color.blue);
     button11.setForeground(Color.blue);
     button12.setForeground(Color.red);
     button13.setForeground(Color.red);
     button14.setForeground(Color.red);
     button15.setForeground(Color.red);
     button16.setForeground(Color.red);
     button1.setFont(font);
     button2.setFont(font);
     button3.setFont(font);
     button4.setFont(font);
     button5.setFont(font);
     button6.setFont(font);
     button7.setFont(font);
     button8.setFont(font);
     button9.setFont(font);
     button10.setFont(font);
     button11.setFont(font);
     button12.setFont(font);
     button13.setFont(font);
     button14.setFont(font);
     button15.setFont(font);
     button16.setFont(font);
     Panel panel1=new Panel();
     Panel panel2=new Panel();
     panel1.setBackground(Color.blue);
     panel2.setBackground(Color.blue);
     boxv1=Box.createVerticalBox();
     boxv2=Box.createVerticalBox();
     boxv3=Box.createVerticalBox();
     boxv4=Box.createVerticalBox();
     boxv1.add(button1);
     boxv1.add(Box.createVerticalStrut(8));
     boxv1.add(button2);
     boxv1.add(Box.createVerticalStrut(8));
     boxv1.add(button3);
     boxv1.add(Box.createVerticalStrut(8));
     boxv1.add(button4);
     boxv2.add(button5);
     boxv2.add(Box.createVerticalStrut(8));
     boxv2.add(button6);
     boxv2.add(Box.createVerticalStrut(8));
     boxv2.add(button7);
     boxv2.add(Box.createVerticalStrut(8));
     boxv2.add(button8);
     boxv3.add(button9);
     boxv3.add(Box.createVerticalStrut(8));
     boxv3.add(button10);
     boxv3.add(Box.createVerticalStrut(8));
     boxv3.add(button11);
     boxv3.add(Box.createVerticalStrut(8));
     boxv3.add(button12);
     boxv4.add(button13);
     boxv4.add(Box.createVerticalStrut(8));
     boxv4.add(button14);
     boxv4.add(Box.createVerticalStrut(8));
     boxv4.add(button15);
     boxv4.add(Box.createVerticalStrut(8));
     boxv4.add(button16);
     boxh1=Box.createVerticalBox();
     boxh2=Box.createVerticalBox();
     boxh3=Box.createVerticalBox();
     boxh4=Box.createVerticalBox();
     boxh1.add(boxv1);
     boxh2.add(boxv2);
     boxh3.add(boxv3);
     boxh4.add(boxv4);
     panel2.add(boxh1);
     panel2.add(boxh2);
     panel2.add(boxh3);
     panel2.add(boxh4);
     panel1.add(text);
     button1.addActionListener(this);
     button2.addActionListener(this);
     button3.addActionListener(this);
     button4.addActionListener(this);
     button5.addActionListener(this);
     button6.addActionListener(this);
     button7.addActionListener(this);
     button8.addActionListener(this);
     button9.addActionListener(this);
     button10.addActionListener(this);
     button11.addActionListener(this);
     button12.addActionListener(this);
     button13.addActionListener(this);
     button14.addActionListener(this);
     button15.addActionListener(this);
     button16.addActionListener(this);
     add(panel1,BorderLayout.NORTH);
     add(panel2,BorderLayout.CENTER);
     setBounds(100,100,250,250);
     setVisible(true);
     validate();
   }   
   public void actionPerformed(ActionEvent e)
   { int s=0,R=0;//s为文本框中的整型数据,R为运算后的整型结果
     int op1=0,op2=0;//op1为第一个操作数,op2为第二个操作数
     char op=' ';//op为操作符
     String m=text.getText();//向文本框中取字符  
     String str1=String.valueOf(R);
  if(e.getSource()==button1)
   { int n=Integer.parseInt(m);
     s=n*10+7;
     String str=String.valueOf(s);
     text.setText(str);
   }
if(e.getSource()==button2)
   { int n=Integer.parseInt(m); 
     s=n*10+4;
     String str=String.valueOf(s);
     text.setText(str);
   }
if(e.getSource()==button3)
   {  
     int n=Integer.parseInt(m); 
     s=n*10+1;
     String str=String.valueOf(s);
     text.setText(str);
   }
    if(e.getSource()==button4)
   {  
     int n=Integer.parseInt(m); 
     s=n*10+0;
     String str=String.valueOf(s);
     text.setText(str);
   }
    if(e.getSource()==button5)
   { 
       int n=Integer.parseInt(m); 
     s=n*10+8;
     String str=String.valueOf(s);
     text.setText(str);
   }
    if(e.getSource()==button6)
   {  
     int n=Integer.parseInt(m); 
     s=n*10+5;
     String str=String.valueOf(s);
     text.setText(str);
   }
    if(e.getSource()==button7)
   {  
     int n=Integer.parseInt(m); 
     s=n*10+2;
     String str=String.valueOf(s);
     text.setText(str);
   }
    if(e.getSource()==button8)
   { text.setText("0");
   }
    if(e.getSource()==button9)
   { 
     int n=Integer.parseInt(m); 
     s=n*10+9;
     String str=String.valueOf(s);
     text.setText(str);
   }
    if(e.getSource()==button10)
   {  
     int n=Integer.parseInt(m); 
     s=n*10+6;
     String str=String.valueOf(s);
     text.setText(str);
   }
    if(e.getSource()==button11)
   {   
     int n=Integer.parseInt(m); 
     s=n*10+3;
     String str=String.valueOf(s);
     text.setText(str);
   }
    if(e.getSource()==button12)
   { op2=Integer.parseInt(m); 
     String r;
     switch(op)
       { case '+':
         R=op1+op2;
         r=String.valueOf(R);
         text.setText(r); break;
         case '-':
         R=op1-op2;
         r=String.valueOf(R);
         text.setText(r); break;
         case '*':
         R=op1*op2;
         r=String.valueOf(R);
         text.setText(r); break;
         case '/':
         R=op1/op2;
         r=String.valueOf(R);
         text.setText(r); break;
       }
   }
   if(e.getSource()==button13)
   { op1=Integer.parseInt(m);
     text.setText(null);
     op='+';
     }
     if(e.getSource()==button14)
     { op1=Integer.parseInt(m);
       text.setText(null);
       op='-';
     }
     if(e.getSource()==button15)
     { op1=Integer.parseInt(m);
       text.setText(null);
       op='*';
     }
     if(e.getSource()==button16)
     { op1=Integer.parseInt(m);
       text.setText(null);
       op='/';
     }
    }
}
public class 计算器
{  public static void main(String args[])
   { 布局 win=new 布局();
   }
}      
     

解决方案 »

  1.   

    现在都流行用汉语了么。。
    public class 计算器
      

  2.   

    空指针异常怎么解决: public void actionPerformed(ActionEvent e)
                      { int s=0,R=0;//s为文本框中的整型数据,R为运算后的整型结果
                         int op1=0,op2=0;//op1为第一个操作数,op2为第二个操作数
                         char op=' ';//op为操作符
                         String m=text.getText();//向文本框中取字符   
                         String str1=String.valueOf(R);
    我用op1保存了第一个数据,又在按下‘=’之前保存第二个数据op2,这样有什么问题吗,改怎么改进
      

  3.   

    请问什么是debug啊?谢谢!
    debug就是单步吗?
      

  4.   

    首先要说的是,你没有考虑异常处理机制,try{}catch(),你有没有想到,当用进行除法操作时,当用户输入的分母为0时,那输出的结果会是怎样呀?我看了一下你的代码,好像没有一处进行过异常处理吧,建议你好好看看异常处理这章吧,希望我的回答能给你带来些帮助,祝你好运!