计算器程序--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(); } }
相关文章推荐
- 以前用java写的计算器程序
- 我的第一个JAVA程序之计算器
- JAVA实现计算器控制台程序
- Java:计算器小程序
- sdut_java_C/C++经典程序训练3---模拟计算器
- java计算器程序
- Java写的计算器程序
- JAVA第一个GUI程序---计算器
- 200行Java代码搞定计算器程序
- 写的第一个java GUI程序--计算器。
- 不带有界面的简单的计算器小程序(Java语言实现)
- JAVAGUI-计算器程序
- java 小程序 计算器
- 用java写一个计算器程序
- 【分享】【计算器程序--java编写】
- 网络交互式-计算器程序-Java程序设计
- Java编写一个计算器程序过程介绍
- 用java scanner 编写计算器程序
- 我的Java第一堂课-计算器小程序
- 第一个Java程序——计算器