java簡單計算器
Ⅰ 用java設計一個簡單的計算器。
無聊寫了個,修復了下Bug:
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JOptionPane;
importjavax.swing.JTextField;
{
=1L;
privateJButtonplus,rece,multiply,divice,reset;
privateJTextFieldone,two,result;
privatebooleandevice_falg=false;
privatefinalintwidth=400,height=300;
publicCalculate(){
super("修改密碼");
this.setLayout(null);
this.setSize(width,height);
init();
Layout();
}
publicvoidinit(){
plus=newJButton("加");
rece=newJButton("減");
multiply=newJButton("乘");
divice=newJButton("除");
reset=newJButton("清空");
one=newJTextField();
two=newJTextField();
result=newJTextField();
}
publicvoidLayout(){
this.add(newJLabel("第一個數")).setBounds(20,10,60,80);
this.add(one).setBounds(100,38,100,25);
this.add(newJLabel("第二個數")).setBounds(20,40,60,80);
this.add(two).setBounds(100,70,100,25);
this.add(newJLabel("結果")).setBounds(20,85,60,80);
this.add(result).setBounds(100,110,100,25);
this.add(plus).setBounds(70,170,80,25);
this.add(rece).setBounds(200,170,80,25);
this.add(multiply).setBounds(70,200,80,25);
this.add(divice).setBounds(200,200,80,25);
this.add(reset).setBounds(300,220,80,25);
plus.addActionListener(this);
rece.addActionListener(this);
multiply.addActionListener(this);
divice.addActionListener(this);
reset.addActionListener(this);
this.setVisible(true);
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}
publicbooleanFormat(){
booleanFLAG=false;
booleanflag=false;
Stringone=this.one.getText().toString().trim();
Stringtwo=this.two.getText().toString().trim();
if(one==null||one.equals("")||two==null||two.equals("")){
JOptionPane.showMessageDialog(getParent(),"請輸入完整信息!");
FLAG=false;
flag=true;
}
booleanboll_1=one.matches("[\d]{1,100}");
booleanboll_2=two.matches("[\d]{1,100}");
booleanboll_3=one.matches("[\d]{1,100}+[.]+[\d]{1,100}");
booleanboll_4=two.matches("[\d]{1,100}+[.]+[\d]{1,100}");
if(flag){
returnfalse;
}
if((boll_1&&boll_2)||(boll_3&&boll_4)||(boll_1&&boll_4)
||(boll_3&&boll_2)){
FLAG=true;
}else{
JOptionPane.showMessageDialog(getParent(),"請輸入數字!");
FLAG=false;
}
if(FLAG&&device_falg){
if(Double.parseDouble(two)==0){
JOptionPane.showMessageDialog(getParent(),"被除數不能為0!");
FLAG=false;
device_falg=false;
}
}
returnFLAG;
}
publicdoublePlus(doubleone,doubletwo){
returnone+two;
}
publicdoubleMultiply(doubleone,doubletwo){
returnone*two;
}
publicdoubleDivice(doubleone,doubletwo){
returnone/two;
}
publicdoubleRece(doubleone,doubletwo){
returnone-two;
}
publicvoidClear(){
one.setText("");
two.setText("");
result.setText("");
}
@Override
publicvoidactionPerformed(ActionEvente){
Objecto=e.getSource();
if(o==reset){
Clear();
return;
}
if(o==divice){
device_falg=true;
}
if(!Format()){
return;
}
doubleone=Double.parseDouble(this.one.getText());
doubletwo=Double.parseDouble(this.two.getText());
doubleresult=0;
if(o==plus){
result=Plus(one,two);
}elseif(o==rece){
result=Rece(one,two);
}elseif(o==multiply){
result=Multiply(one,two);
}elseif(o==divice){
result=Divice(one,two);
}
this.result.setText(""+result);
}
publicstaticvoidmain(String[]args){
newCalculate();
}
}
Ⅱ 求JAVA編寫的 簡易計算器程序,附上注釋
1、中塵首先准備好軟體即eclipse和java,下載安裝完成後打開eclipse。
Ⅲ 編寫java程序簡單計算器
主要涉及的知識點: 類的寫法, 以及方法的調用 .建議多做亮隱仿練習. 如果有看不懂的地方. 可以繼續追問,一起討論.
參考代碼如下
//Number類
classNumber{
privateintn1;//私有的整型數據成員n1
privateintn2;//私有的整型數據成員n2
//通過構造函數給n1和n2賦值
publicNumber(intn1,intn2){
this.n1=n1;
this.n2=n2;
}
//加法
publicintaddition(){
returnn1+n2;
}
//減法
publicintsubtration(){
returnn1-n2;
}
//乘法
publicintmultiplication(){
returnn1*n2;
}
//除法(可能除不盡,所以使用double作為返回類攜者型)
publicdoubledivision(){
returnn1*1.0/n2;//通過n1*1.0把計算結果轉換成double類敬纖型.
}
}
//Exam4類
publicclassExam4{
publicstaticvoidmain(String[]args){
Numbernumber=newNumber(15,6);//創建Number類的對象
//下面的是調用方法得到返回值進行輸出顯示
System.out.println("加法"+number.addition());
System.out.println("減法"+number.subtration());
System.out.println("乘法"+number.multiplication());
System.out.println("除法"+number.division());
}
}
Ⅳ 用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編寫一個計算器
importjava.awt.BorderLayout;
importjava.awt.Color;
importjava.awt.GridLayout;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.ImageIcon;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JPanel;
importjavax.swing.JTextField;
importjavax.swing.SwingConstants;
{
/**
*
*/
=1L;
Resultresult=newResult();//定義text的面板
Number_Keynumber_key=newNumber_Key();//定義按鈕面板
//當點擊按鈕+、-、*、/時,com=true
booleancom=false;
//當i=0時說明是我們第一次輸入,字元串text不會累加
inti=0;
//存放text的內容
Stringtext="";
//存放點擊按鈕+、-、*、/之前的數值
doubledefbutton=0;
//+、-、*、/的代號分別為1,2,3,4
intsymbol=0;
//構造函數
Jisuanqi(){
super("WangJiao");//設定標題
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//設定關閉窗體時退出程序
JPanelpane=newJPanel();//定義主面板
pane.setLayout(newBorderLayout());
setBounds(380,220,30,80);//前兩個參數是在屏幕上顯示的坐標,後兩個是大小
//替換圖標
ImageIconicon=newImageIcon("F:1.GIF");
//Jisuanqi.class.getResource("APPLE.GIF")
//);
setIconImage(icon.getImage());
pane.add(result,BorderLayout.NORTH);
pane.add(number_key,BorderLayout.CENTER);
pane.add(number_key.equal,BorderLayout.SOUTH);
number_key.one.addActionListener(this);//對1按鈕添加監聽事件
number_key.two.addActionListener(this);//對2按鈕添加監聽事件
number_key.three.addActionListener(this);//對3按鈕添加監聽事件
number_key.four.addActionListener(this);//對4按鈕添加監聽事件
number_key.five.addActionListener(this);//對5按鈕添加監聽事件
number_key.six.addActionListener(this);//對6按鈕添加監聽事件
number_key.seven.addActionListener(this);//對7按鈕添加監聽事件
number_key.eight.addActionListener(this);//對8按鈕添加監聽事件
number_key.nine.addActionListener(this);//對9按鈕添加監聽事件
number_key.zero.addActionListener(this);//對0按鈕添加監聽事件
number_key.ce.addActionListener(this);//對置零按鈕添加監聽事件
number_key.plus.addActionListener(this);//對+按鈕添加監聽事件
number_key.equal.addActionListener(this);//對=按鈕添加監聽事件
number_key.sub.addActionListener(this);//對-按鈕添加監聽事件
number_key.mul.addActionListener(this);//對*按鈕添加監聽事件
number_key.div.addActionListener(this);//對/按鈕添加監聽事件
number_key.point.addActionListener(this);//對.按鈕添加監聽事件
setContentPane(pane);
pack();//初始化窗體大小為正好盛放所有按鈕
}
//各個按鈕觸發的事件
publicvoidactionPerformed(ActionEvente){
/*
*如果是點擊數字按鈕那麼先要判斷是否在此之前點擊了+、-、*、/、=,如果是那麼com=true如果沒有com=
*false;或者是否點擊數字鍵,如果是i=1,如果沒有i=0;
*/
if(e.getSource()==number_key.one){
if(com||i==0){
result.text.setText("1");
com=false;
i=1;
}else{
text=result.text.getText();
result.text.setText(text+"1");
}
}elseif(e.getSource()==number_key.two){
if(com||i==0){
result.text.setText("2");
com=false;
i=1;
}else{
text=result.text.getText();
result.text.setText(text+"2");
}
}elseif(e.getSource()==number_key.three){
if(com||i==0){
result.text.setText("3");
com=false;
i=1;
}else{
text=result.text.getText();
result.text.setText(text+"3");
}
}elseif(e.getSource()==number_key.four){
if(com||i==0){
result.text.setText("4");
com=false;
i=1;
}else{
text=result.text.getText();
result.text.setText(text+"4");
}
}elseif(e.getSource()==number_key.five){
if(com||i==0){
result.text.setText("5");
com=false;
i=1;
}else{
text=result.text.getText();
result.text.setText(text+"5");
}
}elseif(e.getSource()==number_key.six){
if(com||i==0){
result.text.setText("6");
com=false;
i=1;
}else{
text=result.text.getText();
result.text.setText(text+"6");
}
}elseif(e.getSource()==number_key.seven){
if(com||i==0){
result.text.setText("7");
com=false;
i=1;
}else{
text=result.text.getText();
result.text.setText(text+"7");
}
}elseif(e.getSource()==number_key.eight){
if(com||i==0){
result.text.setText("8");
com=false;
i=1;
}else{
text=result.text.getText();
result.text.setText(text+"8");
}
}elseif(e.getSource()==number_key.nine){
if(com||i==0){
result.text.setText("9");
com=false;
i=1;
}else{
text=result.text.getText();
result.text.setText(text+"9");
}
}
/*
*對於0這個按鈕有一定的說法,在我的程序里不會出現如00000這樣的情況,我加了判斷條件就是
*如果text中的數值=0就要判斷在這個數值中是否有.存在?如果有那麼就在原來數值基礎之上添加0;否則保持原來的數值不變
*/
elseif(e.getSource()==number_key.zero){//result.text.getText()是得到text里內容的意思
if(com||i==0){
result.text.setText("0");
com=false;
i=1;
}else{
text=result.text.getText();
if(Float.parseFloat(text)>0||Float.parseFloat(text)<0){//Float.parseFloat(text)就是類型轉換了,下面都是一樣
result.text.setText(text+"0");
}else{
if(text.trim().indexOf(".")==-1){
result.text.setText(text);
}else{
result.text.setText(text+"0");
}
}
}
}elseif(e.getSource()==number_key.ce){
result.text.setText("0");
i=0;
com=true;
//text="";
defbutton=0;
}
/*
*本程序不會讓一個數值中出現2個以上的小數點.具體做法是:判斷是否已經存在.存在就不添加,不存在就添加.
*/
elseif(e.getSource()==number_key.point){
if(com||i==0){
result.text.setText("0.");
com=false;
i=1;
}else{
text=result.text.getText();
if(text.trim().indexOf(".")==-1){
result.text.setText(text+".");
}else{
result.text.setText(text);
}
}
}//獲得點擊+之前的數值
elseif(e.getSource()==number_key.plus){
com=true;
i=0;
defbutton=Double.parseDouble(result.text.getText());
symbol=1;
}//獲得點擊-之前的數值
elseif(e.getSource()==number_key.sub){
com=true;
i=0;
defbutton=Double.parseDouble(result.text.getText());
symbol=2;
}//獲得點擊*之前的數值
elseif(e.getSource()==number_key.mul){
com=true;
i=0;
defbutton=Double.parseDouble(result.text.getText());
System.out.println(defbutton);
symbol=3;
}//獲得點擊/之前的數值
elseif(e.getSource()==number_key.div){
com=true;
i=0;
defbutton=Double.parseDouble(result.text.getText());
symbol=4;
}elseif(e.getSource()==number_key.equal){
switch(symbol){
case1:{//計算加法
doublead=defbutton
+Double.parseDouble(result.text.getText());
result.text.setText(ad+"");
i=0;
text="";
break;
}
case2:{//計算減法
doublead=defbutton
-Double.parseDouble(result.text.getText());
result.text.setText(String.valueOf(ad));
i=0;
text="";
break;
}
case3:{//計算乘法
doublead=defbutton
*Double.parseDouble(result.text.getText());
result.text.setText(ad+"");
i=0;
text="";
break;
}
case4:{//計算除法
doublead=defbutton
/Double.parseDouble(result.text.getText());
result.text.setText(ad+"");
i=0;
text="";
break;
}
}
System.out.println(com);
}
System.out.println(result.text.getText());
}
@SuppressWarnings("deprecation")
publicstaticvoidmain(String[]args){
Jisuanqiloveyou=newJisuanqi();
loveyou.show();
}
}
//計算器數字按鈕定義面板
classNumber_KeyextendsJPanel{
/**
*
*/
=1L;
JButtonzero=newJButton("0");//數字鍵0
JButtonone=newJButton("1");//數字鍵1
JButtontwo=newJButton("2");//數字鍵2
JButtonthree=newJButton("3");//數字鍵3
JButtonfour=newJButton("4");//數字鍵4
JButtonfive=newJButton("5");//數字鍵5
JButtonsix=newJButton("6");//數字鍵6
JButtonseven=newJButton("7");//數字鍵7
JButtoneight=newJButton("8");//數字鍵8
JButtonnine=newJButton("9");//數字鍵9
JButtonplus=newJButton("+");
JButtonsub=newJButton("-");
JButtonmul=newJButton("*");
JButtondiv=newJButton("/");
JButtonequal=newJButton("=");
JButtonce=newJButton("清零");//置零鍵
JButtonpoint=newJButton(".");
Number_Key(){
setLayout(newGridLayout(4,4,1,1));//定義布局管理器為網格布局
setBackground(Color.blue);//設置背景顏色
//添加按鈕
add(one);
add(two);
add(three);
add(four);
add(five);
add(six);
add(seven);
add(eight);
add(nine);
add(zero);
add(plus);
add(sub);
add(mul);
add(div);
add(point);
add(equal);
add(ce);
}
}
//計算器顯示結果的窗體
classResultextendsJPanel{
/**
*
*/
=1L;
//text先是輸入和結果
JTextFieldtext=newJTextField("0");
@SuppressWarnings("deprecation")
Result(){//講輸入的數字或得到的結果在text的右邊顯示
text.setHorizontalAlignment(SwingConstants.RIGHT);
text.enable(false);//文本框不能編輯
setLayout(newBorderLayout());//設定布局管理器邊框布局
add(text,BorderLayout.CENTER);//text放置在窗體的中間
}
}
直接復制保存成Jisuanqi.java可以直接運行了
Ⅵ 用Java做一個簡單的計算器
窗體
package Calc;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
*
* 計算器程序
*
*/
public class CalcFrame extends JFrame {
JButton[] buttons = new JButton[16];// 16個按鈕
StringBuffer sb = null;//
JTextField text1 = null;// 計算器結果顯示框
String no1 = null;
String sign = null;// 表示+-*/符號
String[] s = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "-",
"*", "/", "=", "C" };// 面板上的字元
public CalcFrame() {
setTitle("計算器");
setResizable(false);
setBounds(200, 200, 300, 350);
setLayout(null);
sb = new StringBuffer();
text1 = new JTextField();
text1.setBounds(10, 10, 250, 30);// 設置位置
text1.setFont(new Font("Arial", Font.PLAIN, 20));// 設置字體
text1.setForeground(Color.RED);// 設置顏色
add(text1);
for (int i = 0; i < s.length; i++) {
buttons[i] = new JButton(s[i]);
buttons[i].setFont(new Font("Serif", Font.BOLD, 18));
add(buttons[i]);
}// 生成面板上的按鈕.
buttons[0].setBounds(10, 50, 50, 40);
buttons[0].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
sb.append(0);
text1.setText(sb.toString());
}
});
buttons[1].setBounds(70, 50, 50, 40);
buttons[1].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
sb.append(1);
text1.setText(sb.toString());
}
});
buttons[2].setBounds(130, 50, 50, 40);
buttons[2].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
sb.append(2);
text1.setText(sb.toString());
}
});
buttons[3].setBounds(190, 50, 50, 40);
buttons[3].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
sb.append(3);
text1.setText(sb.toString());
}
});
buttons[4].setBounds(10, 100, 50, 40);
buttons[4].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
sb.append(4);
text1.setText(sb.toString());
}
});
buttons[5].setBounds(70, 100, 50, 40);
buttons[5].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
sb.append(5);
text1.setText(sb.toString());
}
});
buttons[6].setBounds(130, 100, 50, 40);
buttons[6].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
sb.append(6);
text1.setText(sb.toString());
}
});
buttons[7].setBounds(190, 100, 50, 40);
buttons[7].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
sb.append(7);
text1.setText(sb.toString());
}
});
buttons[8].setBounds(10, 150, 50, 40);
buttons[8].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
sb.append(8);
text1.setText(sb.toString());
}
});
buttons[9].setBounds(70, 150, 50, 40);
buttons[9].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
sb.append(9);
text1.setText(sb.toString());
}
});
buttons[10].setBounds(130, 150, 50, 40);
buttons[10].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
sign = "+";
no1 = text1.getText();
sb.delete(0, sb.capacity());
}
});
buttons[11].setBounds(190, 150, 50, 40);
buttons[11].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
sign = "-";
no1 = text1.getText();
sb.delete(0, sb.capacity());
}
});
buttons[12].setBounds(10, 200, 50, 40);
buttons[12].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
sign = "*";
no1 = text1.getText();
sb.delete(0, sb.capacity());
}
});
buttons[13].setBounds(70, 200, 50, 40);
buttons[13].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
sign = "/";
no1 = text1.getText();
sb.delete(0, sb.capacity());
}
});
buttons[14].setForeground(Color.RED);
buttons[14].setBounds(130, 200, 50, 40);
buttons[14].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int sum = 0;//最終結果
if (sign.equals("+")) {
int no2 = Integer.parseInt(no1);//取得前一個數
int no3 = Integer.parseInt(text1.getText());//取得現在的數
sum = no2 + no3;//累加
text1.setText(String.valueOf(sum));
}
if (sign.equals("-")) {
int no2 = Integer.parseInt(no1);
int no3 = Integer.parseInt(text1.getText());
sum = no2 - no3;
text1.setText(String.valueOf(sum));
}
if (sign.equals("*")) {
int no2 = Integer.parseInt(no1);
int no3 = Integer.parseInt(text1.getText());
sum = no2 * no3;
text1.setText(String.valueOf(sum));
}
if (sign.equals("/")) {
int no2 = Integer.parseInt(no1);
int no3 = Integer.parseInt(text1.getText());
sum = no2 / no3;
text1.setText(String.valueOf(sum));
}
}
});
buttons[15].setBounds(190, 200, 50, 40);
buttons[15].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
sb.delete(0, sb.capacity());//清除sb的內容
text1.setText("");//結果框設置為空
}
});
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//響應關閉窗口
setVisible(true);//顯示窗口
}
}
2.主程序類
package Calc;
public class CalcTest {
public static void main(String[] args) {
CalcFrame f = new CalcFrame();
}
}
學習Java就到IT學習聯盟
Ⅶ 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編寫一個簡單計算器
/*
* @(#)JCalculator.java 1.00 06/17/2015
*/
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
/**
* A simple calculator program.
*<p>I saw this program in a QQ group, and help a friend correct it.</p>
*
*@authorSingyuenYip
*@version1.00 12/29/2009
*@seeJFrame
*@seeActionListener
*/
{
/**
* Serial Version UID
*/
= -169068472193786457L;
/**
* This class help close the Window.
*@authorSingyuenYip
*
*/
{
publicvoidwindowClosing(WindowEvent we) {
System.exit(0);
}
}
inti;
// Strings for Digit & Operator buttons.
privatefinalString[]str= {"7","8","9","/","4","5","6","*","1",
"2","3","-",".","0","=","+"};
// Build buttons.
JButton[]buttons=newJButton[str.length];
// For cancel or reset.
JButtonreset=newJButton("CE");
// Build the text field to show the result.
JTextFielddisplay=newJTextField("0");
/**
* Constructor without parameters.
*/
publicJCalculator() {
super("Calculator");
// Add a panel.
JPanel panel1 =newJPanel(newGridLayout(4, 4));
// panel1.setLayout(new GridLayout(4,4));
for(i= 0;i<str.length;i++) {
buttons[i] =newJButton(str[i]);
panel1.add(buttons[i]);
}
JPanel panel2 =newJPanel(newBorderLayout());
// panel2.setLayout(new BorderLayout());
panel2.add("Center",display);
panel2.add("East",reset);
// JPanel panel3 = new Panel();
getContentPane().setLayout(newBorderLayout());
getContentPane().add("North", panel2);
getContentPane().add("Center", panel1);
// Add action listener for each digit & operator button.
for(i= 0;i<str.length;i++)
buttons[i].addActionListener(this);
// Add listener for "reset" button.
reset.addActionListener(this);
// Add listener for "display" button.
display.addActionListener(this);
// The "close" button "X".
addWindowListener(newWindowCloser());
// Initialize the window size.
setSize(800, 800);
// Show the window.
// show(); Using show() while JDK version is below 1.5.
setVisible(true);
// Fit the certain size.
pack();
}
publicvoidactionPerformed(ActionEvent e) {
Object target = e.getSource();
String label = e.getActionCommand();
if(target ==reset)
handleReset();
elseif("0123456789.".indexOf(label) > 0)
handleNumber(label);
else
handleOperator(label);
}
// Is the first digit pressed?
booleanisFirstDigit=true;
/**
* Number handling.
*@paramkey the key of the button.
*/
publicvoidhandleNumber(String key) {
if(isFirstDigit)
display.setText(key);
elseif((key.equals(".")) && (display.getText().indexOf(".") < 0))
display.setText(display.getText() +".");
elseif(!key.equals("."))
display.setText(display.getText() + key);
isFirstDigit=false;
}
/**
* Reset the calculator.
*/
publicvoidhandleReset() {
display.setText("0");
isFirstDigit=true;
operator="=";
}
doublenumber= 0.0;
Stringoperator="=";
/**
* Handling the operation.
*@paramkey pressed operator's key.
*/
publicvoidhandleOperator(String key) {
if(operator.equals("+"))
number+= Double.valueOf(display.getText());
elseif(operator.equals("-"))
number-= Double.valueOf(display.getText());
elseif(operator.equals("*"))
number*= Double.valueOf(display.getText());
elseif(operator.equals("/"))
number/= Double.valueOf(display.getText());
elseif(operator.equals("="))
number= Double.valueOf(display.getText());
display.setText(String.valueOf(number));
operator= key;
isFirstDigit=true;
}
publicstaticvoidmain(String[] args) {
newJCalculator();
}
}
運行界面:
Ⅸ java 實現一個簡單的計算器,能做100以內的加減乘除
網上找的,如果你是要求的這樣的,自己寫也要好一會:枯茄
import java.awt.*;
import java.awt.event.*;
public class Calculator {
private Frame f;
private TextField tf = new TextField(30);
private long result;
private boolean append = false;
private Button[] btn = new Button[15];
private char operator = '=';
public static void main(String[] args) {
new Calculator().go();
}
public Calculator() {
initComponent();
}
private void initComponent() {
f = new Frame("Java Calculator");
f.setLayout(new BorderLayout()); // The frame uses BorderLayout
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) {
System.exit(0);
}
});
Panel centerPanel = new Panel();
centerPanel.setLayout(new GridLayout(5, 3)); // The panel uses GridLayout
NumberListener nl = new NumberListener();
OperatorListener ol = new OperatorListener();
btn[10] = new Button("+");
btn[11] = new Button("-");
btn[12] = new Button("*");
btn[13] = new Button("/");
btn[14] = new Button("=");
for (int i = 0; i <= 9; i++) {
btn[i] = new Button(String.valueOf(i));
centerPanel.add(btn[i]);
btn[i].addActionListener(nl);
if (i % 2 == 1) {
centerPanel.add(btn[(i + 19) / 2]);
btn[(i + 19) / 2].addActionListener(ol);
}
}
f.add(centerPanel, BorderLayout.CENTER);
Panel northPanel = new Panel();
tf.setEditable(false);
northPanel.add(tf);
f.add(northPanel, BorderLayout.NORTH);
}
public void go() {
f.pack();
f.setVisible(true);
}
/**
* 採用成員內部類方式,沒沒察實現監聽器介面,方便訪問主類內類內部成員。 此類負責數字按鈕Action事件監聽和處理
*/
class NumberListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (!append) {
tf.setText(""察悄);
append = true;
}
String s = tf.getText();
s += e.getActionCommand();
tf.setText(s);
if (!btn[10].isEnabled()) {
for (int i = 10; i <= 14; i++)
btn[i].setEnabled(true);
}
}
}
/**
* 成員內部類,負責操作符按鈕的事件處理
*/
class OperatorListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (!append)
return;
for (int i = 10; i <= 14; i++)
btn[i].setEnabled(false);
String s = tf.getText();
long num = Long.parseLong(s);// get the number of textfield
append = false; // set append
switch (operator) {
case '+':
result += num;
break;
case '-':
result -= num;
break;
case '*':
result *= num;
break;
case '/': {
if (num == 0)
result = 0;
else
result /= num;
break;
}
case '=':
result = num;
break;
}
tf.setText(String.valueOf(result));
// set the value of result to textfield
String op = e.getActionCommand();
operator = op.charAt(0); // set operator
}
}
}