計算器的java代碼
Ⅰ 求用java實現計算器的代碼(可實用的,沒語法錯誤的)
import java.awt.BorderLayout; import java.awt.Color; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.border.TitledBorder; //導包 public class Jisuanqi extends JFrame implements ActionListener { //繼承JFrame 實現事件監聽 private JTextField reasult; private JButton btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, btn0, btnAC, btnAdd, btnSub, btnReasult, btnD, btnAbout, btnCancel; private boolean add, sub, end, s, c; private String str; private double num1, num2; public Jisuanqi() { //構造屬性 JPanel p1 = new JPanel(); JPanel p2 = new JPanel(); JPanel p3 = new JPanel(); TitledBorder tb = new TitledBorder("輸出"); tb.setTitleColor(Color.BLUE); //標題邊框底端線 設置顏色 btnAbout = new JButton(" 關於 "); btnCancel = new JButton("Cancel"); //兩個按鈕 btnCancel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ee) { System.exit(0); } }); //給Cancel添加事件監聽 當滑鼠點擊時 程序結束 btnAbout.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ee) { JOptionPane.showMessageDialog(null, "黃蓋!!", "消息", JOptionPane.INFORMATION_MESSAGE); } //給「關於」添加事件監聽 當滑鼠點擊時 彈出對話框 顯示黃蓋 }); p3.add(btnAbout); p3.add(btnCancel); // JPanel p4=new JPanel(); // JPanel p5=new JPanel(); // reasult.setBorder(tb); reasult = new JTextField("0", 20); reasult.setEditable(false); //設置不能修改 reasult.setHorizontalAlignment(JTextField.RIGHT); // 設置文本的水平對齊方式。 reasult.setForeground(Color.BLUE); //顏色 p1.setBorder(tb); p1.add(reasult); btn0 = new JButton("0"); btn0.addActionListener(this); btn1 = new JButton("1"); btn1.addActionListener(this); btn2 = new JButton("2"); btn2.addActionListener(this); btn3 = new JButton("3"); btn3.addActionListener(this); btn4 = new JButton("4"); btn4.addActionListener(this); btn5 = new JButton("5"); btn5.addActionListener(this); btn6 = new JButton("6"); btn6.addActionListener(this); btn7 = new JButton("7"); btn7.addActionListener(this); btn8 = new JButton("8"); btn8.addActionListener(this); btn9 = new JButton("9"); btn9.addActionListener(this); btnD = new JButton("."); btnD.addActionListener(this); btnD.setForeground(Color.RED); btnAC = new JButton("AC"); btnAC.addActionListener(this); btnAC.setBackground(Color.PINK); btnAdd = new JButton("+"); btnAdd.addActionListener(this); btnAdd.setForeground(Color.BLUE); btnSub = new JButton("—"); btnSub.addActionListener(this); btnSub.setForeground(Color.BLUE); btnReasult = new JButton("="); btnReasult.addActionListener(this); btnReasult.setForeground(Color.RED); //事件監聽 + 顏色 p2.add(btn1); p2.add(btn2); p2.add(btn3); p2.add(btn4); p2.add(btn5); p2.add(btn6); p2.add(btn7); p2.add(btn8); p2.add(btn9); p2.add(btn0); p2.add(btnD); p2.add(btnAC); p2.add(btnAdd); p2.add(btnSub); p2.add(btnReasult); //面板上添加按鈕 p2.setLayout(new GridLayout(5, 3)); //面板上設置對齊方式 add(p1, BorderLayout.NORTH); add(p2, BorderLayout.CENTER); add(p3, BorderLayout.SOUTH); //將p1 p2 p3 面板對象添加到JFrame } public void num(int i) { String s = null; s = String.valueOf(i); if (end) { // 如果數字輸入結束,則將文本框置零,重新輸入 reasult.setText("0"); end = false; } if ((reasult.getText()).equals("0")) { // 如果文本框的內容為零,則覆蓋文本框的內容 reasult.setText(s); } else { // 如果文本框的內容不為零,則在內容後面添加數字 str = reasult.getText() + s; reasult.setText(str); } }/* * * String s=null; * * s=String.valueOf(i); * * str=reasult.getText()+s; * * reasult.setText(str); * * } */ public void actionPerformed(ActionEvent e) { if (e.getSource() == btn1) num(1); else if (e.getSource() == btn2) num(2); else if (e.getSource() == btn3) num(3); else if (e.getSource() == btn4) num(4); else if (e.getSource() == btn5) num(5); else if (e.getSource() == btn6) num(6); else if (e.getSource() == btn7) num(7); else if (e.getSource() == btn8) num(8); else if (e.getSource() == btn9) num(9); else if (e.getSource() == btn0) num(0); else if (e.getSource() == btnAdd) { sign(1); btnD.setEnabled(true); } else if (e.getSource() == btnSub) { sign(2); btnD.setEnabled(true); } else if (e.getSource() == btnAC) { btnD.setEnabled(true); reasult.setText("0"); } else if (e.getSource() == btnD) { str = reasult.getText(); str += "."; reasult.setText(str); btnD.setEnabled(false); } else if (e.getSource() == btnReasult) { btnD.setEnabled(true); num2 = Double.parseDouble(reasult.getText()); if (add) { num1 = num1 + num2; } else if (sub) { num1 = num1 - num2; } reasult.setText(String.valueOf(num1)); end = true; } } public void sign(int s) { if (s == 1) { add = true; sub = false; } else if (s == 2) { add = false; sub = true; } num1 = Double.parseDouble(reasult.getText()); end = true; } //設計計算的過程 public static void main(String[] args) { Jisuanqi j = new Jisuanqi(); j.setTitle("+/-簡易計算器"); j.setLocation(500, 280); j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //默認關閉可以關閉程序 j.setResizable(false); j.pack(); j.setVisible(true); } } 這個計算機,絕對讓你滿意
Ⅱ 用JAVA編寫的科學計算器源代碼
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class Counter extends WindowAdapter
{
static JFrame f=new JFrame("計算器");
static JTextField text1=new JTextField("0.");
static String source="";
static String cal="";
static String object="";
static boolean flag=false;
static boolean flag1=true;
static boolean flag2=false;
public void init()
{
try
{
Container c=f.getContentPane();
JPanel pan1=new JPanel();
JButton b1=new JButton("1");
JButton b2=new JButton("2");
JButton b3=new JButton("3");
JButton b4=new JButton("4");
JButton b5=new JButton("5");
JButton b6=new JButton("6");
JButton b7=new JButton("7");
JButton b8=new JButton("8");
JButton b9=new JButton("9");
JButton b0=new JButton("0");
JButton b11=new JButton("+");
JButton b12=new JButton("-");
JButton b13=new JButton("*");
JButton b14=new JButton("/");
JButton b15=new JButton(".");
JButton b16=new JButton("=");
JButton bclar=new JButton("清零");
text1.setHorizontalAlignment(JTextField.RIGHT);
c.add(text1,"North");
c.add(pan1);
A aa=new A();
Result re=new Result();
Opertion op=new Opertion();
Clar cl=new Clar();
b1.addActionListener(aa);
b2.addActionListener(aa);
b3.addActionListener(aa);
b4.addActionListener(aa);
b5.addActionListener(aa);
b6.addActionListener(aa);
b7.addActionListener(aa);
b8.addActionListener(aa);
b9.addActionListener(aa);
b0.addActionListener(aa);
b11.addActionListener(op);
b12.addActionListener(op);
b13.addActionListener(op);
b14.addActionListener(op);
b16.addActionListener(re);
b15.addActionListener(aa);
bclar.addActionListener(cl);
pan1.add(b1);
pan1.add(b2);
pan1.add(b3);
pan1.add(b11);
pan1.add(b4);
pan1.add(b5);
pan1.add(b6);
pan1.add(b12);
pan1.add(b7);
pan1.add(b8);
pan1.add(b9);
pan1.add(b13);
pan1.add(b0);
pan1.add(b15);
pan1.add(b16);
pan1.add(b14);
pan1.add(bclar);
f.setSize(200,220);
f.setVisible(true);
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}
class A implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String a=text1.getText();
String s=e.getActionCommand();
if(a.equals("0.")||a.equals("+")||a.equals("-")||a.equals("*")||a.equals("/")) 
text1.setText(s);
else {
if(flag2)
{
text1.setText(s);
flag2=false;
}
else
text1.setText(a+s);
}
}
}
class Opertion implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
cal=e.getActionCommand();
if(flag1==true) 
source=text1.getText();
text1.setText(cal);
flag1=false;
flag=true;
}
}
class Result implements ActionListener 
{
public void actionPerformed(ActionEvent e)
{
double num1;
num1=Double.parseDouble(source);
object=text1.getText();
double num2;
num2=Double.parseDouble(object);
double result=0;
if(cal.equals("+"))
result=num1+num2;
if(cal.equals("-"))
result=num1-num2;
if(cal.equals("*"))
result=num1*num2;
if(cal.equals("/"))
if(num2==0)
text1.setText("除數不能為0");
else
result=num1/num2;
String s1=Double.toString(result);
text1.setText(s1);
flag1=true;
flag2=true;
}
}
class Clar implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
text1.setText("0.");
}
}
public static void main(String[] args) 
{
Counter count=new Counter();
count.init();
}
public void windowClosing(WindowEvent e){
System.exit(1);
}
public void windowOpened(WindowEvent e){}
public void windowIconified(WindowEvent e){}
public void windowDeiconified(WindowEvent e){}
public void windowClosed(WindowEvent e){}
public void windowActivated(WindowEvent e){}
public void windowDeactivated(WindowEvent e){}
}
Ⅲ 用JAVA編寫一個簡單的計算器,要求如下:

以下是上圖計算器的代碼:
- packageComputer; 
- importjava.awt.BorderLayout; 
- importjava.awt.Color; 
- importjava.awt.Container; 
- importjava.awt.Font; 
- importjava.awt.GridLayout; 
- importjava.awt.event.ActionEvent; 
- importjava.awt.event.ActionListener; 
- importjava.util.Stack; 
- importjavax.swing.JApplet; 
- importjavax.swing.JButton; 
- importjavax.swing.JFrame; 
- importjavax.swing.JPanel; 
- importjavax.swing.JTextField; 
- { 
- /** 
- * 
- */ 
- =1L; 
- privateJTextFieldtextField=newJTextField("請輸入"); 
- Stringoperator="";//操作 
- Stringinput="";//輸入的式子 
- booleanflag=true; 
- //booleanflag1=true; 
- //booleanflag2=true; 
- publicvoidinit()//覆寫Applet里邊的init方法 
- { 
- ContainerC=getContentPane(); 
- JButtonb[]=newJButton[16]; 
- JPanelpanel=newJPanel(); 
- C.add(textField,BorderLayout.NORTH); 
- C.add(panel,BorderLayout.CENTER); 
- panel.setLayout(newGridLayout(4,4,5,5)); 
- Stringname[]={"7","8","9","+","4","5","6","-","1","2","3","*","0","C","=","/"};//設置按鈕 
- for(inti=0;i<16;i++)//添加按鈕 
- { 
- b[i]=newJButton(name[i]); 
- b[i].setBackground(newColor(192,192,192)); 
- b[i].setForeground(Color.BLUE);//數字鍵設置為藍顏色 
- if(i%4==3) 
- b[i].setForeground(Color.RED); 
- b[i].setFont(newFont("宋體",Font.PLAIN,16));//設置字體格式 
- panel.add(b[i]); 
- b[i].addActionListener(this); 
- } 
- b[13].setForeground(Color.RED);//非數字鍵,即運算鍵設置為紅顏色 
- b[13].setForeground(Color.RED); 
- } 
- publicvoidactionPerformed(ActionEvente) 
- { 
- intcnt=0; 
- StringactionCommand=e.getActionCommand(); 
- if(actionCommand.equals("+")||actionCommand.equals("-")||actionCommand.equals("*")||actionCommand.equals("/")) 
- input+=""+actionCommand+"";//設置輸入,把輸入的樣式改成需要的樣子 
- elseif(actionCommand.equals("C")) 
- input=""; 
- elseif(actionCommand.equals("="))//當監聽到等號時,則處理input 
- { 
- input+="="+compute(input); 
- textField.setText(input); 
- input=""; 
- cnt=1; 
- } 
- else 
- input+=actionCommand;//數字為了避免多位數的輸入不需要加空格 
- if(cnt==0) 
- textField.setText(input); 
- } 
- privateStringcompute(Stringinput)//即1237的樣例 
- { 
- Stringstr[]; 
- str=input.split(""); 
- Stack<Double>s=newStack<Double>(); 
- doublem=Double.parseDouble(str[0]); 
- s.push(m); 
- for(inti=1;i<str.length;i++) 
- { 
- if(i%2==1) 
- { 
- if(str[i].compareTo("+")==0) 
- { 
- doublehelp=Double.parseDouble(str[i+1]); 
- s.push(help); 
- } 
- if(str[i].compareTo("-")==0) 
- { 
- doublehelp=Double.parseDouble(str[i+1]); 
- s.push(-help); 
- } 
- if(str[i].compareTo("*")==0) 
- { 
- doublehelp=Double.parseDouble(str[i+1]); 
- doubleans=s.peek();//取出棧頂元素 
- s.pop();//消棧 
- ans*=help; 
- s.push(ans); 
- } 
- if(str[i].compareTo("/")==0) 
- { 
- doublehelp=Double.parseDouble(str[i+1]); 
- doubleans=s.peek(); 
- s.pop(); 
- ans/=help; 
- s.push(ans); 
- } 
- } 
- } 
- doubleans=0d; 
- while(!s.isEmpty()) 
- { 
- ans+=s.peek(); 
- s.pop(); 
- } 
- Stringresult=String.valueOf(ans); 
- returnresult; 
- } 
- publicstaticvoidmain(Stringargs[]) 
- { 
- JFrameframe=newJFrame("Count"); 
- Countapplet=newCount(); 
- frame.getContentPane().add(applet,BorderLayout.CENTER); 
- applet.init();//applet的init方法 
- applet.start();//線程開始 
- frame.setSize(350,400);//設置窗口大小 
- frame.setVisible(true);//設置窗口可見 
- } 
- } 
Ⅳ JAVA 編寫計算器 要代碼最簡單的
學java的時候自己編的,很簡單,能夠連續輸入計算式後進行計算
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.NumberFormat;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
/**簡易計算器,能夠進行簡單的計算
 * 
 * @see 2008.12.9
*/
public class CalculatorA 
  implements ActionListener{
 
  private JFrame frame;
  private JTextField field;
  private JButton[] allButtons;
  private JButton clearButton;
//  private JButton backButton;
  String result="";//保存結果
  StringBuilder sb = new StringBuilder();//保存要進行的計算式
  int x = 0;   //用來判斷上一次的事件類型 
  String str = "123+456-789*0.=/";
  ArrayList<String> arrayList = new ArrayList<String>();//保存計算式,通過方法進行運算
  
  public CalculatorA(){
   
   frame = new JFrame("我的計算器v1.1");
   frame.setLocation(300,300);
   
   field = new JTextField(25);
   
   allButtons = new JButton[16];
   for(int i=0;i<allButtons.length;i++){
     allButtons[i]= new JButton(str.substring(i,i+1));
   }
   clearButton = new JButton("CLEAR");
//   backButton = new JButton("<——");
   
   init();
   setFondAndColor();
   addEventHander();
  }
  
  public void init(){
   frame.setLayout(new BorderLayout());
   
   JPanel northPanel = new JPanel();
   JPanel centerPanel = new JPanel();
   JPanel southPanel = new JPanel();
   
   northPanel.setLayout(new FlowLayout());
   centerPanel.setLayout(new GridLayout(4,4));
   southPanel.setLayout(new FlowLayout());
   
   northPanel.add(field);
   for(int i=0;i<allButtons.length;i++){
    centerPanel.add(allButtons[i]);
   }
   southPanel.add(clearButton);
   //southPanel.add(backButton);
   
   frame.add(northPanel,BorderLayout.NORTH);
   frame.add(centerPanel,BorderLayout.CENTER);
   frame.add(southPanel,BorderLayout.SOUTH);
  }
  //設置輸入字體
  public void setFondAndColor(){
    field.setFont(new Font("宋體",Font.BOLD,24));
    field.setBackground(new Color(100,200,200));
    field.setForeground(Color.RED);
    //設置字體從右起始
    field.setHorizontalAlignment(JTextField.RIGHT);
  }
  
  public void showMi(){
   frame.pack();
   frame.setResizable(false);
   frame.setVisible(true);
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
  
  public void addEventHander(){
   for(int i=0;i<allButtons.length;i++){
    allButtons[i].addActionListener(this);  
   }
   clearButton.addActionListener(this);
//   backButton.addActionListener(this);
  }
  @Override
  public void actionPerformed(ActionEvent e) {
    String str = e.getActionCommand();//取得當前事件返回的值
    if("0123456789.".indexOf(str)!=-1){
        if(x == 0){ //當x為0時表示還沒有進行輸入
        result=str;
        sb.append(str);
        field.setText(str);
        x = 1;
       }
       else if(x == 1){
        result = result +str;
        sb.append(str);
        field.setText(result);
        x = 1;
       }
       else if(x == 2){
        sb.delete(0,sb.length());
        result = result+str;
        sb.append(str);
        field.setText(result);
        x = 1;
       }
       else if(x == 3){
        result = str;
        sb.delete(0,sb.length());
        arrayList.clear();
        field.setText(str);
        sb.append(str);
        field.setText(str);
        x = 1;
       }
       else if(x == 4){
        result ="";
        sb.delete(0,sb.length());
        arrayList.clear();
        result = str;
        sb.append(str);
        field.setText(str);
        x = 1;
       }
       else{
        result = result +str;
        sb.append(str);
        field.setText(result);
        x = 1;
       }
    }
    else if("+*-/".indexOf(str)!=-1){
      if(x == 0){
        field.setText("");
        x = 2;
       }
      else if(x == 1){
       result = result + str;
       arrayList.add(sb.toString());
       arrayList.add(str);
       sb.append(str);
       field.setText(result);
       x = 2;
      }
      else if(x == 2){
       x = 2;
      }
      else if(x == 3){
       field.setText(result+str);
       arrayList.add(result);
       arrayList.add(str);
       result = result+str;
       x = 2;
      }
      else if(x == 4){
       result ="";
       sb.delete(0,sb.length());
       arrayList.clear();
       x = 2;
      }
      else{
       field.setText(result+str);
       arrayList.add(result);
       arrayList.add(str);
       result = result+str;
       x = 2;
      }
    }
    else if("=".equals(str)){
       if(x == 0){
        field.setText("0");
        arrayList.clear();
        result = "0";
        x = 3;
       }
       else if(x == 1){
        try{
         arrayList.add(sb.toString());
         arrayList = getResult(arrayList);
         result = arrayList.get(0);
         field.setText(result);
         arrayList.clear();
         x = 3;
       }catch(Exception e1){
        field.setText("數據格式異常");
        x = 0;
       }
       }
       else if(x == 2){
        field.setText("數據格式錯誤.....");
        arrayList.clear();
        x = 0;
       }
       else if(x == 3){
        field.setText(result);
        x = 3;
       }
       else if(x == 4){
        result ="";
        sb.delete(0,sb.length());
        arrayList.clear();
        x = 3;
       }
       else {
        try{
          arrayList.add(sb.toString());
          arrayList = getResult(arrayList);
          result = arrayList.get(0);
          field.setText(result);
          arrayList.clear();
          x = 3;
        }catch(Exception e1){
         field.setText("數據格式異常");
         x = 0;
        }
       }
    }
    else if("CLEAR".equals(str)){
     arrayList.clear();
     field.setText("0");
     arrayList.add("0");
     x = 4;
    }
    else{
     if(result.length()>1){
      result = result.substring(0,result.length()-1);
      if(sb.length()>0){
       sb.delete(sb.length()-1,sb.length());
      }
      else {
       sb.delete(0,1);
      }
      field.setText(result);
      x = 5;
     }
     else{
      result = "";
      sb.delete(0,sb.length());
      arrayList.clear();
      field.setText("0");
      x = 0;
     }
    }
  }
  public static ArrayList<String> getResult(ArrayList<String> list){
   String res = null;
   String[] s = {"/","*","-","+"};
   int i=0;
   if(list.size()>1){
    for(;i<s.length;){
     if(s[i].equals("/")){
      for(int j=0;j<list.size();j++){
       if(list.get(j).equals(s[i])){
        res = Double.toString(Double.parseDouble(list.get(j-1))/Double.parseDouble(list.get(j+1)));
        //本地的數據格式
        NumberFormat nf = NumberFormat.getInstance();
        res = nf.format(Double.parseDouble(res));
        res = getChange(res);
        list.set(j-1,res);
        list.remove(j);
        list.remove(j);
        getResult(list);
       }
      }
      i++;
     }
     else if(s[i].equals("*")){
      for(int j=0;j<list.size();j++){
       if(list.get(j).equals(s[i])){
        res = Double.toString(Double.parseDouble(list.get(j-1))*Double.parseDouble(list.get(j+1)));
        NumberFormat nf = NumberFormat.getInstance();
        res = nf.format(Double.parseDouble(res));
        res = getChange(res);
        list.set(j-1,res);
        list.remove(j);
        list.remove(j);
        getResult(list);
       }
      }
      i++;
     }
     else if(s[i].equals("-")){
      for(int j=0;j<list.size();j++){
       if(list.get(j).equals(s[i])){
        res = Double.toString(Double.parseDouble(list.get(j-1))-Double.parseDouble(list.get(j+1)));
        NumberFormat nf = NumberFormat.getNumberInstance();
        res = nf.format(Double.parseDouble(res));
        res = getChange(res);
        list.set(j-1,res);
        list.remove(j);
        list.remove(j);
        getResult(list);
       }
      }
      i++;
     }
     else {
      for(int j=0;j<list.size();j++){
       if(list.get(j).equals(s[i])){
        res = Double.toString(Double.parseDouble(list.get(j-1))+Double.parseDouble(list.get(j+1)));
        NumberFormat nf = NumberFormat.getInstance();
        res = nf.format(Double.parseDouble(res));
        res = getChange(res);
        list.set(j-1,res);
        list.remove(j);
        list.remove(j);
        getResult(list);
       }
      }
      i++;
     }
    }
   }
   return list;
  }
  //對數字字元串進行排除不必要符號
  public static String getChange(String res){
   String s_temp = "";
   char[] c = new char[res.length()];
   for(int k=0;k<c.length;k++){
     c[k] = res.charAt(k);
   }
   for(int k=0;k<c.length;k++){
    if((c[k]>= '0' && c[k]<= '9')|| c[k] == '.'){
     s_temp += c[k];
    }
   }
   return s_temp;
  }
  public static void main(String[] args){
   new CalculatorA().showMi();
  }
}
Ⅳ java 計算器代碼
import javax.swing.*;   
import javax.swing.border.Border;   
import java.awt.*;   
import java.awt.event.ActionListener;   
import java.awt.event.ActionEvent;   
import java.math.BigDecimal;   
import java.math.RoundingMode;   
import java.util.HashMap;   
    
/**  
 * 我的計算器。Cheshi 繼承於 JFrame,是計算器的界面  
c*/  
public class Cheshi extends JFrame {   
    
    private Border border = BorderFactory.createEmptyBorder(5, 5, 5, 5);   
    
    private JTextField textbox = new JTextField("0");   
    
    private CalculatorCore core = new CalculatorCore();   
    
    private ActionListener listener = new ActionListener() {   
    
        public void actionPerformed(ActionEvent e) {   
            JButton b = (JButton) e.getSource();   
            String label = b.getText();   
            String result = core.process(label);   
            textbox.setText(result);   
        }   
    };   
    
    public Cheshi(String title) throws HeadlessException {   
        super(title);       // 調用父類構造方法   
        setupFrame();       // 調整窗體屬性   
        setupControls();    // 創建控制項   
    }   
    
    private void setupControls() {   
        setupDisplayPanel();    // 創建文本面板   
        setupButtonsPanel();    // 創建按鈕面板   
    }   
    
    // 創建按鈕面板並添加按鈕   
    private void setupButtonsPanel() {   
        JPanel panel = new JPanel();   
        panel.setBorder(border);   
        panel.setLayout(new GridLayout(4, 5, 3, 3));   
    
        createButtons(panel, new String[]{   
                "7", "8", "9", "+", "C",   
                "4", "5", "6", "-", "CE",   
                "1", "2", "3", "*", "",  // 空字元串表示這個位置沒有按鈕   
                "0", ".", "=", "/", ""  
        });   
    
        this.add(panel, BorderLayout.CENTER);   
    }   
    
    /**  
     * 在指定的面板上創建按鈕  
     *  
     * @param panel  要創建按鈕的面板  
     * @param labels 按鈕文字  
     */  
    private void createButtons(JPanel panel, String[] labels) {   
        for (String label : labels) {   
            // 如果 label 為空,則表示創建一個空面板。否則創建一個按鈕。   
            if (label.equals("")) {   
                panel.add(new JPanel());   
    
            } else {   
                JButton b = new JButton(label);   
                b.addActionListener(listener);  // 為按鈕添加偵聽器   
                panel.add(b);   
            }   
        }   
    }   
    
    // 設置顯示面板,用一個文本框來作為計算器的顯示部分。   
    private void setupDisplayPanel() {   
        JPanel panel = new JPanel();   
        panel.setLayout(new BorderLayout());   
        panel.setBorder(border);   
    
        setupTextbox();   
        panel.add(textbox, BorderLayout.CENTER);   
        this.add(panel, BorderLayout.NORTH);   
    }   
    
    // 調整文本框   
    private void setupTextbox() {   
        textbox.setHorizontalAlignment(JTextField.RIGHT);   // 文本右對齊   
        textbox.setEditable(false);                         // 文本框只讀   
        textbox.setBackground(Color.white);                 // 文本框背景色為白色   
    }   
    
    // 調整窗體   
    private void setupFrame() {   
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);   // 當窗體關閉時程序結束   
        this.setLocation(100, 50);      // 設置窗體顯示在桌面上的位置   
        this.setSize(300, 200);         // 設置窗體大小   
        this.setResizable(false);       // 窗體大小固定   
    }   
    
    // 程序入口   
    public static void main(String[] args) throws Exception {   
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());   
        Cheshi frame = new Cheshi("我的計算器");   
        frame.setVisible(true);          // 在桌面上顯示窗體   
    }   
}   
    
/**  
 * 計算器核心邏輯。這個邏輯只能處理 1~2 個數的運算。  
 */  
class CalculatorCore {   
    
    private String displayText = "0";   // 要顯示的文本   
    
    boolean reset = true;   
    
    private BigDecimal number1, number2;   
    
    private String operator;   
    
    private HashMap<String, Operator> operators = new HashMap<String, Operator>();   
    
    private HashMap<String, Processor> processors = new HashMap<String, Processor>();   
    
    CalculatorCore() {   
        setupOperators();   
        setupProcessors();   
    }   
    
    // 為每種命令添加處理方式   
    private void setupProcessors() {   
        processors.put("[0-9]", new Processor() {   
            public void calculate(String command) {   
                numberClicked(command);   
            }   
        });   
        processors.put("\\.", new Processor() {   
            public void calculate(String command) {   
                dotClicked();   
            }   
        });   
        processors.put("=", new Processor() {   
            public void calculate(String command) {   
                equalsClicked();   
            }   
        });   
        processors.put("[+\\-*/]", new Processor() {   
            public void calculate(String command) {   
                operatorClicked(command);   
            }   
        });   
        processors.put("C", new Processor() {   
            public void calculate(String command) {   
                clearClicked();   
            }   
        });   
        processors.put("CE", new Processor() {   
            public void calculate(String command) {   
                clearErrorClicked();   
            }   
        });   
    }   
    
    // 為每種 operator 添加處理方式   
    private void setupOperators() {   
        operators.put("+", new Operator() {   
            public BigDecimal process(BigDecimal number1, BigDecimal number2) {   
                return number1.add(number2);   
            }   
        });   
        operators.put("-", new Operator() {   
            public BigDecimal process(BigDecimal number1, BigDecimal number2) {   
                return number1.subtract(number2);   
            }   
        });   
        operators.put("*", new Operator() {   
            public BigDecimal process(BigDecimal number1, BigDecimal number2) {   
                return number1.multiply(number2);   
            }   
        });   
        operators.put("/", new Operator() {   
            public BigDecimal process(BigDecimal number1, BigDecimal number2) {   
                return number1.divide(number2, 30, RoundingMode.HALF_UP);   
            }   
        });   
    }   
    
    // 根據命令處理。這里的命令實際上就是按鈕文本。   
    public String process(String command) {   
        for (String pattern : processors.keySet()) {   
            if (command.matches(pattern)) {   
                processors.get(pattern).calculate(command);   
                break;   
            }   
        }   
    
        return displayText;   
    }   
    
    // 當按下 CE 時   
    private void clearErrorClicked() {   
        if (operator == null) {   
            number1 = null;   
        } else {   
            number2 = null;   
        }   
        displayText = "0";   
        reset = true;   
    }   
    
    // 當按下 C 時,將計算器置為初始狀態。   
    private void clearClicked() {   
        number1 = null;   
        number2 = null;   
        operator = null;   
        displayText = "0";   
        reset = true;   
    }   
    
    // 當按下 = 時   
    private void equalsClicked() {   
        calculateResult();   
        number1 = null;   
        number2 = null;   
        operator = null;   
        reset = true;   
    }   
    
    // 計算結果   
    private void calculateResult() {   
        number2 = new BigDecimal(displayText);   
        Operator oper = operators.get(operator);   
        if (oper != null) {   
            BigDecimal result = oper.process(number1, number2);   
            displayText = result.toString();   
        }   
    }   
    
    // 當按下 +-*/ 時(這里也可以擴展成其他中間操作符)   
    private void operatorClicked(String command) {   
        if (operator != null) {   
            calculateResult();   
        }   
    
        number1 = new BigDecimal(displayText);   
        operator = command;   
    
        reset = true;   
    }   
    
    // 當按下 . 時   
    private void dotClicked() {   
        if (displayText.indexOf(".") == -1) {   
            displayText += ".";   
        } else if (reset) {   
            displayText = "0.";   
        }   
        reset = false;   
    }   
    
    // 當按下 0-9 時   
    private void numberClicked(String command) {   
        if (reset) {   
            displayText = command;   
        } else {   
            displayText += command;   
        }   
        reset = false;   
    }   
    
    // 運算符處理介面   
    interface Operator {   
    
        BigDecimal process(BigDecimal number1, BigDecimal number2);   
    }   
    
    // 按鈕處理介面   
    interface Processor {   
    
        void calculate(String command);   
    }   
    
}
Ⅵ java計算器代碼
import java.awt.*;
import java.awt.event.*;
public class lvhaiya{
	int tmp,sum,sum1,sum2=1,sum3=1;
	String a,b,c,d;String s="";
	Frame f=new Frame("計算器");
			private String[]name={
		"0","1","2","3","4","5","6","7","8","9","+","-","*","/","=","空格"
	};
	public Button[] button=new Button[name.length];
	TextField t=new TextField("",30);
	Panel p=new Panel();
	Panel p1=new Panel();
	Color color=new Color(100,170,90);
	public lvhaiya(){
		p1.setLayout(new GridLayout(5,5));
		for(int i=0;i<name.length;i++){
			button[i]=new Button(name[i]);
			p1.add(button[i]);
		}
		p.setLayout(new FlowLayout(FlowLayout.LEFT));
		p.setBackground(color);
		p.add(t);
		f.add(p,BorderLayout.NORTH);
		f.add(p1,BorderLayout.SOUTH);
		f.pack();
		f.setVisible(true);
		f.addWindowListener( new WindowClose());
		t.setText("0.");
		for(int i=0;i<name.length;i++){
			button[i].addActionListener(new ButtonEventl());
		}
		
	}
	public static void main(String[]args){
	new lvhaiya();
	}
	class WindowClose extends WindowAdapter{
		public void windouClosing(WindowEvent e){
			System.exit(0);
			
		}
	}
	class ButtonEventl implements ActionListener{
		public void actionPerformed(ActionEvent e)throws ArithmeticException{
			String command=e.getActionCommand();
			
			if(command.equals("+")){
				sum=Integer.parseInt(t.getText())+sum;
				t.setText(String.valueOf(sum));
				a=t.getText();
				s="";
			}
			else if(command.equals("-")){
				sum1=Integer.parseInt(t.getText());
				b=t.getText();
				s="";
			}
			else if(command.equals("*")){
				sum2=Integer.parseInt(t.getText())*sum2;
				t.setText(String.valueOf(sum2));
				c=t.getText();
				s="";
			}
			else if(command.equals("/")){
				sum3=Integer.parseInt(t.getText());
				d=t.getText();
				s="";
			}
			else if(command.equals("=")){
				if(a!=null){
					t.setText(String.valueOf(sum+tmp));
				}
				if(b!=null){
					t.setText(String.valueOf(sum1-tmp));
			
				}
				if(c!=null){
					t.setText(String.valueOf(sum2*tmp));
				}
			try{
				if(d!=null){
					t.setText(String.valueOf(sum3/tmp));
				}
			}
				catch(ArithmeticException a){
					t.setText("除數不能為零");
				}
			}
			else if(command.equals("空格")){
				sum=0;
				a=null;
				b=null;
				c=null;
				d=null;
				sum1=0;
				sum2=1;
				sum3=1;
				tmp=0;
				t.setText("0");
				s="";
			}
			else{
				s=s+command;
				t.setText(s);
				tmp=Integer.parseInt(s);
			}
			
		}
	}
}
//按鈕可以自己美化一下  希望可以幫到你
Ⅶ 怎麼用JAVA編程編寫一個計算器
- 打開IED:打開自己java編程的軟體,採用的是eclipse軟體。 
- 建立java工程。 
- 編寫類。 
