一个非常简单的计算器,java实现,swing写的界面,只能进行诸如+、-、*、/的简单计算,而且没有考虑优先级
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class jsq extends JFrame {
//private JFrame jframe;
private double result=0,right=0,show,saveResult=0;
private boolean save=false,first=true,num=true,dolt=false;
private char op=0;
private JPanel pa1,pa2,pa3;
private JTextField text;
private JButton button[]=new JButton[27];
public jsq(){
super("计算器0.1Beta@author 卢炬 CS0410");
Container con=getContentPane();
button[0]=new JButton("Backspace");
button[1]=new JButton("CE");
button[2]=new JButton("C");
button[3]=new JButton("MC");
for(int i=4;i<7;i++){
button[i]=new JButton(Integer.toString(i+3));
}
button[7]=new JButton("/");
button[8]=new JButton("sqrt");
button[9]=new JButton("MR");
for(int i=10;i<13;i++){
button[i]=new JButton(Integer.toString(i-6));
}
button[13]=new JButton("*");
button[14]=new JButton("%");
button[15]=new JButton("MS");
for(int i=16;i<19;i++){
button[i]=new JButton(Integer.toString(i-15));
}
button[19]=new JButton("-");
button[20]=new JButton("1/x");
button[21]=new JButton("M+");
button[22]=new JButton("0");
button[23]=new JButton("+/-");
button[24]=new JButton(".");
button[25]=new JButton("+");
button[26]=new JButton("=");
EventHandler handler=new EventHandler();
text=new JTextField();
con.add(text,BorderLayout.NORTH);
pa1=new JPanel();
pa1.setLayout(new FlowLayout());
pa1.add(new JButton(" "));
for(int i=0;i<3;i++)
pa1.add(button[i]);
con.add(pa1,BorderLayout.CENTER);
pa2=new JPanel(new GridLayout(4,6));
for(int i=3;i<27;i++)
pa2.add(button[i]);
con.add(pa2,BorderLayout.SOUTH);
pack();
setSize(360,210);
setVisible(true);
for(int i=0;i<27;i++)
button[i].addActionListener(handler);
}
class EventHandler extends javax.swing.JButton implements ActionListener{
public void actionPerformed(ActionEvent event){
JButton butn=(JButton)event.getSource();
if(butn==button[0]){
if(right!=0){
String s=new Double(right).toString();
s=s.substring(0,s.length()-1);
right=Double.parseDouble(s);
show = right;
}
}
else if(butn==button[1]) { right=0;show=0;num=true;}
else if(butn==button[2]) {
right=0; result=0;
show=0;num=true;
}
else if(butn==button[3]) save=false;
else if(butn==button[4]||butn==button[5]||butn==button[6]||butn==button[10]||
butn==button[11]||butn==button[12]||butn==button[16]||butn==button[17]||
butn==button[18]||butn==button[22]||butn==button[24]){
if(butn==button[24]) dolt=true;
if(num) {
String sf1=butn.getText();
right=Double.parseDouble(sf1);
show=right;num=false;
}
else {
StringBuffer sf;
if(!dolt){
int tm=(int) right;
sf=new StringBuffer(new Integer(tm).toString());
}
else{
sf=new StringBuffer(new Double(right).toString());
}
sf.append(butn.getText());
right=Double.parseDouble(sf.toString());
show=right;num=false;
}
}
else if(butn==button[7]||butn==button[13]||butn==button[19]||butn==button[25]||butn==button[26]){
num=true;
if(op==0) { result=right;show = result;}
else {
switch(op){
case '*': result*=right;break;
case '/': result/=right;break;
case '-': result-=right;break;
case '+': result+=right;break;
}
show=result;
}
if(butn==button[7]) op='/';
else if(butn==button[13]) op='*';
else if(butn==button[19]) op='-';
else if(butn==button[25]) op='+';
}
else if(butn==button[8]){
num=true;
right=Math.sqrt(right);
show =right;
}
else if(butn==button[9]) { num=true;right=saveResult;show=right;}
else if(butn==button[14]){ num=true;right/=100;show=right; }
else if(butn==button[15]){ num=true;save=true;saveResult=show;}
else if(butn==button[20]){ num=true;right=1/right; show=right;}
else if(butn==button[21]){
num=true;
if(show==right) saveResult+=right;
else saveResult*=2;
}
else if(butn==button[23]){
if(show==right) right*=-1;
else result*=-1;
show*=-1;
}
if(save)
text.setText("M "+new Double(show).toString());
else text.setText(new Double(show).toString());
}
}
public static void main(String[] args){
jsq test=new jsq();
}
}



















































































































































