import java.awt.*;
import java.awt.event.*;import javax.swing.*;public class Counter {
 public static void main(String args[]) {
  Wdesk Cdesk = new Wdesk();
 }
}class Wdesk extends JFrame {
 
 
 Wdesk() {
  setTitle("Calculator");   
  setLayout(new GridLayout(2,1));
  add(FJpanel);
  FJpanel.add(TField);
  FJpanel.add(DJpanel);
  add(DJpanel);
  DJpanel.setLayout(new GridLayout(4,4));  
  Button number1 = new Button("1");   
  number1.addActionListener(new btnAction());
  DJpanel.add(number1); 
  Button number2 = new Button("2");   
  number2.addActionListener(new btnAction());
  DJpanel.add(number2);
  Button number3 = new Button("3");   
  number3.addActionListener(new btnAction());
  DJpanel.add(number3);
  Button number12 = new Button("/");   
  number12.addActionListener(new btnAction());
  DJpanel.add(number12);   
  Button number4 = new Button("4");   
  number4.addActionListener(new btnAction());
  DJpanel.add(number4);
  Button number5 = new Button("5");   
  number5.addActionListener(new btnAction());
  DJpanel.add(number5 );
  Button number6 = new Button("6");   
  number6.addActionListener(new btnAction());
  DJpanel.add(number6);
  Button number0 = new Button("-");   
  number0.addActionListener(new btnAction());
  DJpanel.add(number0);
  Button number7 = new Button("7");   
  number7.addActionListener(new btnAction());
  DJpanel.add(number7);
  Button number8 = new Button("8");   
  number8.addActionListener(new btnAction());
  DJpanel.add(number8);
  Button number9 = new Button("9");  
  number9.addActionListener(new btnAction());
  DJpanel.add(number9);
  Button number14 = new Button(".");
  number14.addActionListener(new btnAction());
  DJpanel.add(number14);
  Button number10 = new Button("0");   
  number10.addActionListener(new btnAction());
  DJpanel.add(number10);
  Button number11 = new Button("*");   
  number11.addActionListener(new btnAction());
  DJpanel.add(number11);  
  Button number15 = new Button("+");   
  number15.addActionListener(new btnAction());
  DJpanel.add(number15); 
  Button number16 = new Button("=");
  number16.addActionListener(new btnAction());
  DJpanel.add(number16); 
  pack();
  setResizable(false);
  setVisible(true);  
 }
 
 class Close extends WindowAdapter{
  public void windowClosing(WindowEvent e) {
   setVisible(false);
   System.exit(0);
  }  
 }
 
 /*public int Check() {
  numStr = numText.getText(); 
 }*/
 String numStr = null;
 JPanel FJpanel = new JPanel();
 JPanel DJpanel = new JPanel();
 TextField TField = new TextField("",50);
 
 
 private  class  btnAction  implements  ActionListener{ 
  
  private boolean not = true;
  private char ch;
  
  public  void  actionPerformed(ActionEvent  event){  
  if(event.getActionCommand()=="0"){   
   TField.setText(TField.getText()+0); 
   
  } 
  if(event.getActionCommand()=="1") { 
   TField.setText(TField.getText()+1); 
   }
  if(event.getActionCommand()=="2")   {
   TField.setText(TField.getText()+2); 
   }
  if(event.getActionCommand()=="3")  
   {TField.setText(TField.getText()+3);
   
  }
  if(event.getActionCommand()=="4")   {
   TField.setText(TField.getText()+4);
   
  }
  if(event.getActionCommand()=="5") { 
   TField.setText(TField.getText()+5);
   }
  if(event.getActionCommand()=="6")  {
   TField.setText(TField.getText()+6); 
  }
  if(event.getActionCommand()=="7")  {
   TField.setText(TField.getText()+7);
   
  }
  if(event.getActionCommand()=="8") {  
   TField.setText(TField.getText()+8);
   
   }  
  if(event.getActionCommand()=="9") { 
   TField.setText(TField.getText()+9);
  
  }  
  if(event.getActionCommand()=="清空")  {
   TField.setText("0");  
   
  }
  
  if(event.getActionCommand() == "+")
  {  
   ch = '+';
   TField.setText("");
  }
  
  if(event.getActionCommand() == "-")
  { 
   ch =  '-';
   TField.setText("");
  }
  
  if(event.getActionCommand() == "*")
  {
   ch =  '*';
   TField.setText("");
  }
  
  if(event.getActionCommand() == "/")
  {   
   ch = '/';
   TField.setText("");
  }
    
  int number1 = Integer.parseInt(event.getActionCommand());    
  int number2 = number1;
  
  if(event.getActionCommand() == " =") {
   
   switch(ch) {
   case '+':TField.setText(""+(number1+number2));
    break;
   case '-' : TField.setText(""+(number2 - number2));
    break;
   case '*' : TField.setText(""+(number1*number2));
    break;
   case '/' : TField.setText(""+number1/number2);
    break;
   }
  }
  
  
  
  }
  
 
  
 }
}
当按下运算符时不能出现要的结果,哪位给改一下??

解决方案 »

  1.   

    我先给你分析一下出错的原因:
    你的这个程序在按下运算符时会出现以下异常:java.lang.NumberFormatException: For input string: "-"
    出现异常的原因是第163行代码:int number1 = Integer.parseInt(event.getActionCommand());
    因为parseInt(String s) 这个方法要求传入的参数的要求是:必须是数字形式的字符串,比如说"123","12345"等,而当你输入运算符时"+","-","*","/"都不是数字形式的字符串,在调用parseInt(String s)方法将字符串转换为数字就转换不了,所以会发生NumberFormatException(数字格式化异常)。
      

  2.   

    此代码只是修改了你提出的问题,至于其他的bug就你自己调试了哈!!import java.awt.*;
    import java.awt.event.*;import javax.swing.*;public class Counter {
     public static void main(String args[]) {
      Wdesk Cdesk = new Wdesk();
     }
    }class Wdesk extends JFrame {


      private  char ch;
      private  int number1;
      private int number2;
     
     
     Wdesk() {
      setTitle("Calculator");   
      setLayout(new GridLayout(2,1));
      add(FJpanel);
      FJpanel.add(TField);
      FJpanel.add(DJpanel);
      add(DJpanel);
      DJpanel.setLayout(new GridLayout(4,4));  
      Button number1 = new Button("1");   
      number1.addActionListener(new btnAction());
      DJpanel.add(number1); 
      Button number2 = new Button("2");   
      number2.addActionListener(new btnAction());
      DJpanel.add(number2);
      Button number3 = new Button("3");   
      number3.addActionListener(new btnAction());
      DJpanel.add(number3);
      Button number12 = new Button("/");   
      number12.addActionListener(new btnAction());
      DJpanel.add(number12);   
      Button number4 = new Button("4");   
      number4.addActionListener(new btnAction());
      DJpanel.add(number4);
      Button number5 = new Button("5");   
      number5.addActionListener(new btnAction());
      DJpanel.add(number5 );
      Button number6 = new Button("6");   
      number6.addActionListener(new btnAction());
      DJpanel.add(number6);
      Button number0 = new Button("-");   
      number0.addActionListener(new btnAction());
      DJpanel.add(number0);
      Button number7 = new Button("7");   
      number7.addActionListener(new btnAction());
      DJpanel.add(number7);
      Button number8 = new Button("8");   
      number8.addActionListener(new btnAction());
      DJpanel.add(number8);
      Button number9 = new Button("9");  
      number9.addActionListener(new btnAction());
      DJpanel.add(number9);
      Button number14 = new Button(".");
      number14.addActionListener(new btnAction());
      DJpanel.add(number14);
      Button number10 = new Button("0");   
      number10.addActionListener(new btnAction());
      DJpanel.add(number10);
      Button number11 = new Button("*");   
      number11.addActionListener(new btnAction());
      DJpanel.add(number11);  
      Button number15 = new Button("+");   
      number15.addActionListener(new btnAction());
      DJpanel.add(number15); 
      Button number16 = new Button("=");
      number16.addActionListener(new btnAction());
      DJpanel.add(number16); 
      pack();
      setResizable(false);
      setVisible(true);  
     }
     
     class Close extends WindowAdapter{
      public void windowClosing(WindowEvent e) {
       setVisible(false);
       System.exit(0);
      }  
     }
     
     /*public int Check() {
      numStr = numText.getText(); 
     }*/
     String numStr = null;
     JPanel FJpanel = new JPanel();
     JPanel DJpanel = new JPanel();
     TextField TField = new TextField("",50);
     
     
     private  class  btnAction  implements  ActionListener{ 
      
      private boolean not = true;  public  void  actionPerformed(ActionEvent  event){ 
     
      if(event.getActionCommand()=="0"){   
       TField.setText(TField.getText()+0); 
       
      } 
      if(event.getActionCommand()=="1") { 
       TField.setText(TField.getText()+1); 
       }
      if(event.getActionCommand()=="2")   {
       TField.setText(TField.getText()+2); 
       }
      if(event.getActionCommand()=="3")  
       {TField.setText(TField.getText()+3);
       
      }
      if(event.getActionCommand()=="4")   {
       TField.setText(TField.getText()+4);
       
      }
      if(event.getActionCommand()=="5") { 
       TField.setText(TField.getText()+5);
       }
      if(event.getActionCommand()=="6")  {
       TField.setText(TField.getText()+6); 
      }
      if(event.getActionCommand()=="7")  {
       TField.setText(TField.getText()+7);
       
      }
      if(event.getActionCommand()=="8") {  
       TField.setText(TField.getText()+8);
       
       }  
      if(event.getActionCommand()=="9") { 
       TField.setText(TField.getText()+9);
      
      }  
      if(event.getActionCommand()=="清空")  {
       TField.setText("0");  
       
      }
      
      if(event.getActionCommand() == "+")
      { 
       ch = '+';
       
       if(!"".equals(TField.getText()))
       number1 = Integer.parseInt(TField.getText());
       
       TField.setText("");
      }
      
      else if(event.getActionCommand() == "-")
      { 
       ch =  '-';
       
       if(!"".equals(TField.getText()))
       number1 = Integer.parseInt(TField.getText());
       
       TField.setText("");
      }
      
      else if(event.getActionCommand() == "*")
      {
       ch =  '*';
       
       if(!"".equals(TField.getText()))
       number1 = Integer.parseInt(TField.getText());
       
       TField.setText("");
      }
      
      else if(event.getActionCommand() == "/")
      {   
       ch = '/';
       if(!"".equals(TField.getText()))
       number1 = Integer.parseInt(TField.getText());
       TField.setText("");
      }
        else if(event.getActionCommand() == "=") {
      number2 = Integer.parseInt(TField.getText());
       switch(ch) {
       case '+':TField.setText(""+(number1+number2));
       
        break;
       case '-' : TField.setText(""+(number1 - number2));
        break;
       case '*' : TField.setText(""+(number1*number2));
        break;
       case '/' : TField.setText(""+number1/number2);
        break;
       }}
       
        
      }
      
      
      }
      
     
    }
      

  3.   

    这位高手还是不行呀!  if(!"".equals(TField.getText()))能否解释一下这是什么意思 ??怎么得到两个操作数呀?
      

  4.   

    你复制我的代码,试着运行一下!!!
    if(!"".equals(TField.getText()))这个表示的意思就是:你是否在文本框中输入了内容,在文本框中输入了内容这个条件才成立!如果不进行此判断的话,我没有输入任何内容然后就点了“运算符”就会报错的,因为没有内容,和前面谈到的,就会出现格式化错误!!!!得到两个操作数问题:得到第一个是在你 按了数字接着又按了 运算符的时候得到,通过TField.getText()
    第二个是在你按下等号的时候得到,通过TField.getText()