Java入门 简易计算器
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                Java入门     简易计算器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                
                            
                            
                            package begin;
/*計算器:1.顯示共兩行,上為計算過程,下為計算結果或輸入數字2.可同時實現多個實數的四則運算。3。運算范圍為double。4.可按鈕輸入,也可鍵盤輸入。5.每次只能從最高位向最低位輸入。6.鍵盤輸入加減乘除與按鈕加減乘除有所不同,鍵盤輸入的運算符會保留在輸入欄。( 尚未找到解決方法   )7.只能輸入數字、加、減、乘、除、等于、換行(回車)符,一個實數亦只能有一個小數點,若輸入錯誤,計算將重新開始。*/public class MainClass {public static void main(String arg[]){Calculator test = new Calculator();test.display();}
}
 
                        
                        
                        代碼不難理解,就不解釋了,直接上代碼
package begin;import java.math.*; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.KeyListener;public class Calculator extends JFrame {private JTextField tf1,tf2; //過程框,輸入及結果框private JButton btn1,btn2,btn3,btn4,btn5,btn6,btn7,btn8,btn9,btn0,btnp;private JButton addBtn,subBtn,mulBtn,divBtn,equalBtn;private int cWidth=300, cHeight=400;private long count=0L; //運算符號數目private double a=0,x=0; //輸入數字,運算結果private int mode=1; //運算模式private double pointX=0; //小數位private boolean flag =true; //當前是否為a的第一個數字private boolean flagKey = false ; //當前是否為鍵盤輸入private double stackNum[] = new double[100]; private int top=-1;Calculator(){super("計算器");super.setResizable(false);int sx=10,sy=10,dx=10,tfH=50,dy=10,btnDx=25;tf1 = new JTextField();tf1.setEditable(false);tf1.setBounds(sx, sy,cWidth-2*sx , tfH);tf1.setHorizontalAlignment(JTextField.RIGHT);tf1.setBackground(Color.WHITE);tf1.setBorder(null);tf1.setFont(new Font("Times",Font.CENTER_BASELINE,15));tf2 = new JTextField();tf2.setEditable(true);tf2.setBounds(sx, sy+tfH,cWidth-2*sx , tfH);tf2.setHorizontalAlignment(JTextField.RIGHT);tf2.setBorder(null);tf2.setFont(new Font("Times",Font.BOLD,20));int btnW=(cWidth-2*sx-3*btnDx)/4,btnH=btnW-btnW%10;sy=sy+tfH+tfH;addBtn = new JButton("+");addBtn.setFont(new Font("Times",Font.BOLD,20));//字體,粗體,字號addBtn.setBounds(sx, sy+dy, btnW, btnH);subBtn = new JButton("-");subBtn.setBounds(sx+btnDx+btnW, sy+dy, btnW, btnH);subBtn.setFont(new Font("Times",Font.BOLD,20));mulBtn = new JButton("*");mulBtn.setBounds(sx+2*(btnDx+btnW), sy+dy, btnW, btnH);mulBtn.setFont(new Font("Times",Font.BOLD,20));divBtn = new JButton("/");divBtn.setBounds(sx+3*(btnDx+btnW), sy+dy, btnW, btnH);divBtn.setFont(new Font("Times",Font.BOLD,20));sy=sy+dy+btnH+dy;btn1 = new JButton("1");btn1.setBounds(sx, sy, btnW, btnW);btn2 = new JButton("2");btn2.setBounds(sx+btnDx+btnW , sy, btnW, btnW);btn3 = new JButton("3");btn3.setBounds(sx+2*(btnDx+btnW), sy, btnW, btnW);btn0 = new JButton("0");btn0.setBounds(sx+3*(btnDx+btnW), sy, btnW, btnW);sy+=dy+btnH;btn4 = new JButton("4");btn4.setBounds(sx, sy, btnW, btnW);btn5 = new JButton("5");btn5.setBounds(sx+btnDx+btnW , sy, btnW, btnW);btn6 = new JButton("6");btn6.setBounds(sx+2*(btnDx+btnW), sy, btnW, btnW);btnp = new JButton(".");btnp.setBounds(sx+3*(btnDx+btnW), sy, btnW, btnW);btnp.setFont(new Font("Times",Font.BOLD,20));sy+=dy+btnH;btn7 = new JButton("7");btn7.setBounds(sx, sy, btnW, btnW);btn8 = new JButton("8");btn8.setBounds(sx+btnDx+btnW , sy, btnW, btnW);btn9 = new JButton("9");btn9.setBounds(sx+2*(btnDx+btnW), sy, btnW, btnW);equalBtn = new JButton("=");equalBtn.setBounds(sx+3*(btnDx+btnW), sy, btnW, btnW);equalBtn.setFont(new Font("Times",Font.BOLD,20));}public void display(){Container c = this.getContentPane();c.setLayout(null);c.add(tf1); c.add(tf2);c.add(addBtn);c.add(subBtn);c.add(mulBtn);c.add(divBtn);c.add(btn0);c.add(btn1);c.add(btn2);c.add(btn3);c.add(btn4);c.add(btn5);c.add(btn6);c.add(btn7);c.add(btn8);c.add(btn9);c.add(btnp);c.add(equalBtn);MyEventHandler handler = new MyEventHandler();btn0.addActionListener(handler);btn1.addActionListener(handler);btn2.addActionListener(handler);btn3.addActionListener(handler);btn4.addActionListener(handler);btn5.addActionListener(handler);btn6.addActionListener(handler);btn7.addActionListener(handler);btn8.addActionListener(handler);btn9.addActionListener(handler);btnp.addActionListener(handler);addBtn.addActionListener(handler);subBtn.addActionListener(handler);mulBtn.addActionListener(handler);divBtn.addActionListener(handler);equalBtn.addActionListener(handler);MyKeyHandler keyHandler = new MyKeyHandler();tf2.addKeyListener(keyHandler);this.setSize(cWidth,cHeight);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setLocationRelativeTo(null);this.setVisible(true);}private class MyEventHandler implements ActionListener{public void actionPerformed(ActionEvent e){if(e.getSource()==btn1){flagKey = false;in1();}if(e.getSource()==btn2){flagKey = false;in2(); }if(e.getSource()==btn3){flagKey = false;in3();}if(e.getSource()==btn4){flagKey = false;in4();}if(e.getSource()==btn5){flagKey = false;in5();}if(e.getSource()==btn6){flagKey = false;in6();}if(e.getSource()==btn7){flagKey = false;in7();}if(e.getSource()==btn8){flagKey = false;in8();}if(e.getSource()==btn9){flagKey = false;in9();}if(e.getSource()==btn0){flagKey = false;in0();}if(e.getSource()==btnp){flagKey = false;inp();}if(e.getSource()==addBtn){flagKey = false;inadd();}if(e.getSource()==subBtn){flagKey = false;insub();}if(e.getSource()==mulBtn){flagKey = false;inmul();}if(e.getSource()==divBtn){flagKey = false;indiv();}if(e.getSource()==equalBtn){flagKey = false;inequal();}}}private void in1(){if(flagKey == false){String str = "1";if(flag)str = tf2.getText() + "1";elseflag = true;tf2.setText(str);}if(pointX>0){a+=1.0/pointX;pointX*=10;}elsea = a*10 + 1;}private void in2(){if(flagKey == false){String str = "2";if(flag)str = tf2.getText()+"2";elseflag = true;tf2.setText(str);}if(pointX>0){a+=2.0/pointX;pointX*=10;}elsea = a*10 + 2;}private void in3(){if(flagKey == false){String str = "3";if(flag)str = tf2.getText()+"3";elseflag = true;tf2.setText(str);}if(pointX>0){a+=3.0/pointX;pointX*=10;}elsea = a*10 + 3;}private void in4(){if(flagKey == false){String str = "4";if(flag)str = tf2.getText()+"4";elseflag = true;tf2.setText(str);}if(pointX>0){a+=4.0/pointX;pointX*=10;}elsea = a*10 + 4;}private void in5(){if(flagKey == false){String str = "5";if(flag)str = tf2.getText()+"5";elseflag = true;tf2.setText(str);}if(pointX>0){a+=5.0/pointX;pointX*=10;}elsea = a*10 + 5;}private void in6(){if(flagKey == false){String str = "6";if(flag)str = tf2.getText()+"6";elseflag = true;tf2.setText(str);}if(pointX>0){a+=6.0/pointX;pointX*=10;}elsea = a*10 + 6;}private void in7(){if(flagKey == false){String str = "7" ;if(flag)str = tf2.getText()+"7";elseflag = true;tf2.setText(str);}if(pointX>0){a+=7.0/pointX;pointX*=10;}elsea = a*10 + 7;}private void in8(){if(flagKey == false){String str = "8";if(flag)str = tf2.getText()+"8";elseflag = true;tf2.setText(str);}if(pointX>0){a+=8.0/pointX;pointX*=10;}elsea = a*10 + 8;}private void in9(){if(flagKey == false){String str = "9";if(flag)str = tf2.getText()+"9";elseflag = true;tf2.setText(str);}if(pointX>0){a+=9.0/pointX;pointX*=10;}elsea = a*10 + 9;}private void in0(){if(flagKey == false){String str = "0";if(flag)str = tf2.getText()+"0";elseflag = true;tf2.setText(str);}if(pointX>0){a+=0.0/pointX;pointX*=10;}elsea = a*10 + 0;}private void inp(){if(pointX>0){infalse();return;}if(flagKey == false){String str = "0.";if(flag)str = tf2.getText()+".";elseflag = true;tf2.setText(str);}pointX=10;}private void inadd(){count++;switch(mode){case 1:stackNum[++top] = a;x+=a;break;case 2:stackNum[++top] = -a;x-=a;break;case 3:case 4:stackNum[top] = Calculate(stackNum[top],a);x+= stackNum[top]; }String ac=Double.toString(a),xc=Double.toString(x);if(count==1){tf1.setText(xc.toString()+'+');tf2.setText("");}else{String str1 = tf1.getText() + ac+'+';tf1.setText(str1);tf2.setText(xc);}a=0;mode=1;flag=false;pointX=0;}private void insub(){count++;switch(mode){case 1:stackNum[++top] = a;x+=a;break;case 2:stackNum[++top] = -a;x-=a;break;case 3:case 4:stackNum[top] = Calculate(stackNum[top],a);x+= stackNum[top]; }String ac=Double.toString(a),xc=Double.toString(x);if(count==1){tf1.setText(xc.toString()+'-');tf2.setText("");}else{String str1 = tf1.getText() + ac+'-';tf1.setText(str1);tf2.setText(xc);}a=0L;mode=2;flag=false;pointX=0;}private void inmul(){count++;if(mode<3||top==-1){if(mode==1)stackNum[++top] = a;elsestackNum[++top] = -a;}else{//System.out.println(stackNum[top]);stackNum[top]=Calculate(stackNum[top],a); //此時 stackNum[top]i-1 = ai*ai-1 或 ai/ai-1}String ac=Double.toString(a),xc=Double.toString(x);if(count==1){tf1.setText(ac.toString()+'*');tf2.setText("");}else{String str1 = tf1.getText() + ac+'*';tf1.setText(str1);tf2.setText(xc);}a=0;mode=3;flag=false;pointX=0;}private void indiv(){count++;if(mode<3||top==-1){if(mode==1)stackNum[++top] = a;elsestackNum[++top] = -a;}else{//System.out.println(stackNum[top]);stackNum[top]=Calculate(stackNum[top],a); //此時 stackNum[top]i-1 = ai*ai-1 或 ai/ai-1}String ac=Double.toString(a),xc=Double.toString(x);if(count==1){tf1.setText(xc.toString()+'/');tf2.setText("");}else{String str1 = tf1.getText() + ac+'/';tf1.setText(str1);tf2.setText(xc);}a=0;mode=4;flag=false;pointX=0;}private void inequal(){switch(mode){case 1:x+=a;break;case 2:x-=a;break;case 3:case 4:stackNum[top] = Calculate(stackNum[top],a);x+= stackNum[top]; }String xc=Double.toString(x);tf1.setText("");tf2.setText(xc);//清空top=-1;count=0;a=0;mode=1;flag=false;pointX=0;x=0;}private void infalse(){JOptionPane.showMessageDialog(null, "輸入數據有誤,計算重新開始!");tf1.setText("");tf2.setText("");count=0;a=0;mode=1;flag=false;pointX=0;x=0;}private double Calculate(Double y,Double z){if(mode==1)return y+z;if(mode==2)return y-z;if(mode==3)return y*z;elsereturn y/z;}private class MyKeyHandler extends KeyAdapter{public void keyTyped(KeyEvent e){if(e.getKeyChar()=='\n'||e.getKeyChar()=='='){inequal();}else if(e.getKeyChar()=='+'){//tf2.setText("");inadd();}else if(e.getKeyChar()=='-'){insub();}else if(e.getKeyChar()=='*'){inmul();}else if(e.getKeyChar()=='/'){indiv();}else if(e.getKeyChar()=='0'){flagKey = true;in0();}else if(e.getKeyChar()=='1'){flagKey = true;in1();}else if(e.getKeyChar()=='2'){flagKey = true;in2();}else if(e.getKeyChar()=='3'){flagKey = true;in3();}else if(e.getKeyChar()=='4'){flagKey = true;in4();}else if(e.getKeyChar()=='5'){flagKey = true;in5();}else if(e.getKeyChar()=='6'){flagKey = true;in6();}else if(e.getKeyChar()=='7'){flagKey = true;in7();}else if(e.getKeyChar()=='8'){flagKey = true;in8();}else if(e.getKeyChar()=='9'){flagKey = true;in9();}else if(e.getKeyChar()=='.'){flagKey = true;inp();}else{infalse();}}}}運行結果
轉載于:https://www.cnblogs.com/107acm/p/9428338.html
總結
以上是生活随笔為你收集整理的Java入门 简易计算器的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 魔兽世界冷眼蜥蜴在哪
- 下一篇: 和家亲app(移动和家亲电脑版下载)
