您的位置:首页 > 编程语言 > Java开发

计算器程序--JAVA

2009-11-18 16:01 253 查看
 

 

 /**  实验3
 * @(#)Calculator.java
 * 计算器程序,实现加减乘除等数学简单运算。
 *
 * @ljuan
 * @version 1.00 2009/11/13
 */

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.border.*;
import java.math.*;

public class Calculator0ok extends JFrame
  implements ActionListener{
 private JFrame frame = new JFrame("Calculator");
 private JPanel panel1=new JPanel(); 
 private JPanel panel2=new JPanel();
 private JPanel panel3=new JPanel();
 private GridLayout gridLayout1 = new GridLayout();
 private GridLayout gridLayout2 = new GridLayout(4,6,6,6);
 private JTextField tf =new  JTextField();;
 private String recentOperation = null;
 private String recentNum = null;
 private boolean isNew =  true;
 
  public void addButton(Container c,String s){
  JButton b= new JButton(s);  
  c.add(b);
  b.addActionListener(this);
  }
    public void actionPerformed(ActionEvent e){
       String s=e.getActionCommand();
        if(s.charAt(0)>='0' && s.charAt(0)<='9'){          
         if(!isNew)
     tf.setText(tf.getText()+s);            
      else   tf.setText(s);
      isNew=false;
   if(tf.getText().equals("0")) isNew=true;   //如果是0则显示不变
       }
        else if(s.equals(".")){
         if(tf.getText().indexOf(".") != -1) return;
      if(!isNew && tf.getText() != "")
       tf.setText(tf.getText()+".");
         else
          tf.setText("0.");
         isNew = false;
        }
        else if (s.equals("sqrt")){     
        double last=Double.parseDouble(tf.getText());
        last =Math.sqrt(last);
        tf.setText(""+last);
        isNew = true;       
        }
        else if (s.equals("Backspase")){
         if(!isNew){
      if (tf.getText().length()==1) {
       tf.setText("0");
       isNew = true;
      }
            else  tf.setText(tf.getText().substring(0,tf.getText().length()-1));
     }
  }
        else if (s.equals("CE")||s.equals("C")){
         tf.setText("0");
   recentOperation = null;
         isNew = true;
        }
      else if (s.equals("l/x")){ //用L的小写l代替1,避免与“1”有冲突而成为1/x使程序错误
    if(tf.getText().equals("0")||tf.getText().equals("0.")){
       tf.setText("ERROR");
       isNew = true;
   }
    else{
       double last=Double.parseDouble(tf.getText());
              last = 1/last;
              tf.setText(""+(last));
             }                  
             isNew = true;         }         
        else if(s.equals("+/-")){
          if(tf.getText().charAt(0)!='-')tf.setText("-"+tf.getText());
          else tf.setText(tf.getText().substring(1)); //将前面的符号去除  
        }
     else if (s.equals("=")){
       equalaction(e);
        }
       
     else{
        if(tf.getText().equals("")) return;
        if(recentOperation != null) equalaction(e);
        recentOperation = s;
        recentNum = tf.getText();
        isNew = true;       
     }      
    } 
     
    void equalaction(ActionEvent e){
     if(recentOperation == null || recentNum == null||tf.getText().equals(""))
      return;
     double last =0, now=0;
     
     try{
      last=Double.parseDouble(recentNum);
      now=Double.parseDouble(tf.getText());
     } catch(NumberFormatException ne){
      recentOperation = null;
      recentNum = null;
      tf.setText("数据输入不合法");
      System.out.println("数据输入不合法!");
      isNew=true;
      return;
     }
     if(recentOperation.equals("+")){
       last+= now;
     }
     if(recentOperation.equals("-")){
       last-= now;
     }
     if(recentOperation.equals("*")){
      last*= now;
     }
     if(recentOperation.equals("/")){
      last/= now;
     }
     if(recentOperation.equals("%")){
       last%= now;
     }
      tf.setText(""+last);
     recentNum =tf.getText();
     recentOperation=null;
     isNew=true;
   }
    
 
    void go(){
     
      tf.setBorder(BorderFactory.createLoweredBevelBorder());
     tf.setDisabledTextColor(Color.white);
     tf.setEditable(false);
     tf.setText("0");
     tf.setHorizontalAlignment(SwingConstants.RIGHT);

     panel1.setLayout(gridLayout1);
     panel1.setPreferredSize(new Dimension(333,30));
     panel1.add(tf,new GridBagConstraints(1,0,0,0,0.0,0.0,
            GridBagConstraints.NORTH,GridBagConstraints.HORIZONTAL,
            new Insets(0,1,0,0),155,0));

     panel3.setLayout(new GridLayout(1,5,6,9));
     panel3.add(Box.createRigidArea(new Dimension(30,9)));
     addButton(panel3,"Backspase");  
     addButton(panel3,"CE");  
     addButton(panel3,"C");  
       
        panel2.setLayout(gridLayout2);
        panel2.add(new JButton("MC"));
     addButton(panel2,"7");
     addButton(panel2,"8");
     addButton(panel2,"9");
     addButton(panel2,"/");
     addButton(panel2,"sqrt");
     
     panel2.add(new JButton("MR"));
     addButton(panel2,"4");
     addButton(panel2,"5");
     addButton(panel2,"6");
     addButton(panel2,"*");
     addButton(panel2,"%"); 
     
     panel2.add(new JButton("MS"));
     addButton(panel2,"1");
     addButton(panel2,"2");
     addButton(panel2,"3");
     addButton(panel2,"-");
     addButton(panel2,"l/x");     
     
     panel2.add(new JButton("M+"));
     addButton(panel2,"0");
     addButton(panel2,"+/-");  
     addButton(panel2,".");
     addButton(panel2,"+");  
     addButton(panel2,"=");
    
     Container contentPane = frame.getContentPane();
     contentPane.add(panel1,BorderLayout.NORTH);
     contentPane.add(panel2,Borde
4000
rLayout.SOUTH);
     contentPane.add(panel3,BorderLayout.CENTER);

     frame.pack();
     frame.setVisible(true); 
     frame.setResizable(false);
   
     frame.addWindowListener(new java.awt.event.WindowAdapter(){
      public void windowClosing(WindowEvent e){
       System.exit(0);
      }
     });
           
    }
 
    public static void main(String[] args){
     Calculator0ok that = new Calculator0ok();
     that.go();  
     
    }
     

}

java的实验:利用java实现设计计算器的加减乘除功能。

/**  实验3
* @(#)Calculator.java
* 计算器程序,实现加减乘除等数学简单运算。
*
* @ljuan
* @version 1.00 2009/11/13
*/

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.border.*;
import java.math.*;

public class Calculator0ok extends JFrame
implements ActionListener{
private JFrame frame = new JFrame("Calculator");
private JPanel panel1=new JPanel();
private JPanel panel2=new JPanel();
private JPanel panel3=new JPanel();
private GridLayout gridLayout1 = new GridLayout();
private GridLayout gridLayout2 = new GridLayout(4,6,6,6);
private JTextField tf =new  JTextField();;
private String recentOperation = null;
private String recentNum = null;
private boolean isNew =  true;

public void addButton(Container c,String s){
JButton b= new JButton(s);
c.add(b);
b.addActionListener(this);
}
public void actionPerformed(ActionEvent e){
String s=e.getActionCommand();
if(s.charAt(0)>='0' && s.charAt(0)<='9'){
if(!isNew)
tf.setText(tf.getText()+s);
else   tf.setText(s);
isNew=false;
if(tf.getText().equals("0")) isNew=true;   //如果是0则显示不变
}
else if(s.equals(".")){
if(tf.getText().indexOf(".") != -1) return;
if(!isNew && tf.getText() != "")
tf.setText(tf.getText()+".");
else
tf.setText("0.");
isNew = false;
}
else if (s.equals("sqrt")){
double last=Double.parseDouble(tf.getText());
last =Math.sqrt(last);
tf.setText(""+last);
isNew = true;
}
else if (s.equals("Backspase")){
if(!isNew){
if (tf.getText().length()==1) {
tf.setText("0");
isNew = true;
}
else  tf.setText(tf.getText().substring(0,tf.getText().length()-1));
}
}
else if (s.equals("CE")||s.equals("C")){
tf.setText("0");
recentOperation = null;
isNew = true;
}
else if (s.equals("l/x")){ //用L的小写l代替1,避免与“1”有冲突而成为1/x使程序错误
if(tf.getText().equals("0")||tf.getText().equals("0.")){
tf.setText("ERROR");
isNew = true;
}
else{
double last=Double.parseDouble(tf.getText());
last = 1/last;
tf.setText(""+(last));
}
isNew = true;         }
else if(s.equals("+/-")){
if(tf.getText().charAt(0)!='-')tf.setText("-"+tf.getText());
else tf.setText(tf.getText().substring(1)); //将前面的符号去除
}
else if (s.equals("=")){
equalaction(e);
}

else{
if(tf.getText().equals("")) return;
if(recentOperation != null) equalaction(e);
recentOperation = s;
recentNum = tf.getText();
isNew = true;
}
}

void equalaction(ActionEvent e){
if(recentOperation == null || recentNum == null||tf.getText().equals(""))
return;
double last =0, now=0;

try{
last=Double.parseDouble(recentNum);
now=Double.parseDouble(tf.getText());
} catch(NumberFormatException ne){
recentOperation = null;
recentNum = null;
tf.setText("数据输入不合法");
System.out.println("数据输入不合法!");
isNew=true;
return;
}
if(recentOperation.equals("+")){
last+= now;
}
if(recentOperation.equals("-")){
last-= now;
}
if(recentOperation.equals("*")){
last*= now;
}
if(recentOperation.equals("/")){
last/= now;
}
if(recentOperation.equals("%")){
last%= now;
}
tf.setText(""+last);
recentNum =tf.getText();
recentOperation=null;
isNew=true;
}

void go(){

tf.setBorder(BorderFactory.createLoweredBevelBorder());
tf.setDisabledTextColor(Color.white);
tf.setEditable(false);
tf.setText("0");
tf.setHorizontalAlignment(SwingConstants.RIGHT);

panel1.setLayout(gridLayout1);
panel1.setPreferredSize(new Dimension(333,30));
panel1.add(tf,new GridBagConstraints(1,0,0,0,0.0,0.0,
GridBagConstraints.NORTH,GridBagConstraints.HORIZONTAL,
new Insets(0,1,0,0),155,0));

panel3.setLayout(new GridLayout(1,5,6,9));
panel3.add(Box.createRigidArea(new Dimension(30,9)));
addButton(panel3,"Backspase");
addButton(panel3,"CE");
addButton(panel3,"C");

panel2.setLayout(gridLayout2);
panel2.add(new JButton("MC"));
addButton(panel2,"7");
addButton(panel2,"8");
addButton(panel2,"9");
addButton(panel2,"/");
addButton(panel2,"sqrt");

panel2.add(new JButton("MR"));
addButton(panel2,"4");
addButton(panel2,"5");
addButton(panel2,"6");
addButton(panel2,"*");
addButton(panel2,"%");

panel2.add(new JButton("MS"));
addButton(panel2,"1");
addButton(panel2,"2");
addButton(panel2,"3");
addButton(panel2,"-");
addButton(panel2,"l/x");

panel2.add(new JButton("M+"));
addButton(panel2,"0");
addButton(panel2,"+/-");
addButton(panel2,".");
addButton(panel2,"+");
addButton(panel2,"=");

Container contentPane = frame.getContentPane();
contentPane.add(panel1,BorderLayout.NORTH);
contentPane.add(panel2,BorderLayout.SOUTH);
contentPane.add(panel3,BorderLayout.CENTER);

frame.pack();
frame.setVisible(true);
frame.setResizable(false);

frame.addWindowListener(new java.awt.event.WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});

}

public static void main(String[] args){
Calculator0ok that = new Calculator0ok();
that.go();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  null string import class java go