日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JAVA实现简单计算器布局与功能(附完整源码)

發布時間:2023/12/10 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAVA实现简单计算器布局与功能(附完整源码) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

初識java:利用swing制作一個簡單的計算器

涉及學習內容:

  • 設置窗口
  • 設置按鍵
  • 設置文本框只讀
  • String字符串操作:與double類型間的相互轉換
  • 設置字體屬性
  • 對計算器多種使用情況的考慮,如以加減法為例:
  • 正常操作,輸入一個數后按+號再按另一個數字:12+15
  • 考慮使用者先按+號,那么應該該顯示:0+,乘除則為1*;
  • 被除數不能為0。
  • 本計算器不足之處:

    1、除的計算結果保留15位數

    2、定義double類型計算能力有限

    3、文本框長度不足

    代碼較長,僅供參考,初學Java,如有不足之處請多多指教。

    設置框架、按鈕與文本框:

    public void iniFrame() {setTitle("My Number Computer");setDefaultCloseOperation(EXIT_ON_CLOSE);setSize(400, 660);setLocation(500,150);}public void iniButton() {JButton b_dot=new JButton(".");JButton b_equ=new JButton("=");JButton b_div=new JButton("/");JButton b_mul=new JButton("*");JButton b_sub=new JButton("-");JButton b_plu=new JButton("+");JButton b_0=new JButton("0");JButton b_1=new JButton("1");JButton b_2=new JButton("2");JButton b_3=new JButton("3");JButton b_4=new JButton("4");JButton b_5=new JButton("5");JButton b_6=new JButton("6");JButton b_7=new JButton("7");JButton b_8=new JButton("8");JButton b_9=new JButton("9");pan_button.add(b_7);pan_button.add(b_8);pan_button.add(b_9);pan_button.add(b_div);pan_button.add(b_4);pan_button.add(b_5);pan_button.add(b_6);pan_button.add(b_mul);pan_button.add(b_1);pan_button.add(b_2);pan_button.add(b_3);pan_button.add(b_sub);pan_button.add(b_dot);pan_button.add(b_0);pan_button.add(b_equ);pan_button.add(b_plu);pan_button.setBackground(Color.BLACK);pan_button.setLayout(new GridLayout(4,4,1,1));pan_button.setSize(398,358);b_dot.addActionListener(new B_dot());b_equ.addActionListener(new B_equ());b_div.addActionListener(new B_div());b_mul.addActionListener(new B_mul());b_sub.addActionListener(new B_sub());b_plu.addActionListener(new B_plu());b_0.addActionListener(new B_0());b_1.addActionListener(new B_1());b_2.addActionListener(new B_2());b_3.addActionListener(new B_3());b_4.addActionListener(new B_4());b_5.addActionListener(new B_5());b_6.addActionListener(new B_6());b_7.addActionListener(new B_7());b_8.addActionListener(new B_8());b_9.addActionListener(new B_9());}public void iniTextField() {

    對應按鍵類以及判定類:

    public class judge{public void jdg(char a) {if(a==0)//表示沒有按運算鍵if(num.length()==0)result=0;//而且沒有輸入值,如直接按等于號,elseresult=Double.parseDouble(num);//有輸入值按等于號else//考慮sign=加減乘除的四種情況,b作為計算結果顯示在下面的文本框switch (a) {case '+':result += Double.parseDouble(num);break;case '-':result -= Double.parseDouble(num); break;case '*':result *= Double.parseDouble(num); break;case '/':double aa;aa= Double.parseDouble(num); if(aa==0) {ta_num1.setText("除數不能為0");num="";str1="";result=0;break;}result = result/aa;break;}ta_num1.setText(String.valueOf(result));}}public class B_dot implements ActionListener {public void actionPerformed(ActionEvent e) {num+=".";ta_num.setText(num);}}public class B_equ extends judge implements ActionListener {public void actionPerformed(ActionEvent e) {int r;r=str1.length();if(r>0&&num.length()==0){char a[]=str1.toCharArray();if(a[r-1]<48||a[r-1]>57){ ta_num.setText("0");ta_num1.setText(String.valueOf(result));return;}} this.jdg(sign);ta_num.setText(String.valueOf(result));str1="";num=String.valueOf(result);sign='=';}//等于號之后全部歸0,返回初始狀態}public class B_div extends judge implements ActionListener {public void actionPerformed(ActionEvent e) {int r;r=str1.length();if(r>0&&num.length()==0)//str1不為空,num為空{char a[]=str1.toCharArray();if(a[r-1]<48||a[r-1]>57)//acsii碼;判斷最后一個是不是運算符{ a[str1.length()-1]=47;str1=String.valueOf(a);ta_num.setText(str1);sign='/';//是的話就變成除號/return;}}if(num.length()==0)//下空{str1=new String("0");ta_num.setText("0");}//初始狀態按÷,str1+=num+new String("÷"); //把num和運算符號加在str1后面 ta_num.setText(str1);this.jdg(sign);//執行上一個運算符;sign='/';ta_num.setText(str1);num="";//這時num沒用了,就置空方便下次輸入}}public class B_mul extends judge implements ActionListener {public void actionPerformed(ActionEvent e) {int r;r=str1.length();if(r>0&&num.length()==0){char a[]=str1.toCharArray();if(a[r-1]<48||a[r-1]>57){ a[str1.length()-1]=42;str1=String.valueOf(a);ta_num.setText(str1);sign='*';return;}}if(num.length()==0)//下空{str1=new String("1");ta_num1.setText("0");result=1;}//初始狀態按*,str1+=num+new String("*"); ta_num.setText(str1);this.jdg(sign);//執行上一個運算符;sign='*';ta_num.setText(str1);num="";}}public class B_sub extends judge implements ActionListener {public void actionPerformed(ActionEvent e) {int r;r=str1.length();if(r>0&&num.length()==0){char a[]=str1.toCharArray();if(a[r-1]<48||a[r-1]>57){ a[str1.length()-1]=45;str1=String.valueOf(a);ta_num.setText(str1);sign='-';return;}}if(num.length()==0)//下空{str1=new String("0");ta_num1.setText("0");}//初始狀態按-,str1+=num+new String("-"); ta_num.setText(str1);this.jdg(sign);//執行上一個運算符;sign='-';ta_num.setText(str1);num="";}}public class B_plu extends judge implements ActionListener {

    對應數字類:

    public class B_0 implements ActionListener {public void actionPerformed(ActionEvent e) {num+=0;ta_num.setText(str1+num);}}public class B_1 implements ActionListener {public void actionPerformed(ActionEvent e) {num+=1;ta_num.setText(str1+num);}}public class B_2 implements ActionListener {public void actionPerformed(ActionEvent e) {num+=2;ta_num.setText(str1+num);}}public class B_3 implements ActionListener {public void actionPerformed(ActionEvent e) {num+=3;ta_num.setText(str1+num);}}public class B_4 implements ActionListener {public void actionPerformed(ActionEvent e) {num+=4;ta_num.setText(str1+num);}}public class B_5 implements ActionListener {public void actionPerformed(ActionEvent e) {num+=5;ta_num.setText(str1+num);}}public class B_6 implements ActionListener {public void actionPerformed(ActionEvent e) {num+=6;ta_num.setText(str1+num);}}public class B_7 implements ActionListener {public void actionPerformed(ActionEvent e) {num+=7;ta_num.setText(str1+num);}}public class B_8 implements ActionListener {public void actionPerformed(ActionEvent e) {num+=8;ta_num.setText(str1+num);}}public class B_9 implements ActionListener {

    源代碼如下:

    package elevenWeek;import java.awt.*; import java.awt.event.*; import javax.swing.*;public class NumComputer extends JFrame implements ActionListener{/*** serializable 類 NumComputer 未聲明類型為 long 的靜態終態 serialVersionUID 字段*/private static final long serialVersionUID = 9220237278254619785L;JPanel pan_button = new JPanel();JPanel pan_textfield = new JPanel();String num="";String str1=""; //存儲所有點擊按鍵的結果顯示于上面的文本框double result=0;char sign=0;public JTextArea ta_num=new JTextArea(2,36);public JTextArea ta_num1=new JTextArea(1,36);public NumComputer() {iniFrame();iniButton();iniTextField();Container con = getContentPane();con.setLayout(null);con.add(pan_textfield);con.add(pan_button);con.setLayout(new GridLayout(2,1));setVisible(true);}public void iniFrame() {setTitle("My Number Computer");setDefaultCloseOperation(EXIT_ON_CLOSE);setSize(400, 660);setLocation(500,150);}public void iniButton() {JButton b_dot=new JButton(".");JButton b_equ=new JButton("=");JButton b_div=new JButton("/");JButton b_mul=new JButton("*");JButton b_sub=new JButton("-");JButton b_plu=new JButton("+");JButton b_0=new JButton("0");JButton b_1=new JButton("1");JButton b_2=new JButton("2");JButton b_3=new JButton("3");JButton b_4=new JButton("4");JButton b_5=new JButton("5");JButton b_6=new JButton("6");JButton b_7=new JButton("7");JButton b_8=new JButton("8");JButton b_9=new JButton("9");pan_button.add(b_7);pan_button.add(b_8);pan_button.add(b_9);pan_button.add(b_div);pan_button.add(b_4);pan_button.add(b_5);pan_button.add(b_6);pan_button.add(b_mul);pan_button.add(b_1);pan_button.add(b_2);pan_button.add(b_3);pan_button.add(b_sub);pan_button.add(b_dot);pan_button.add(b_0);pan_button.add(b_equ);pan_button.add(b_plu);pan_button.setBackground(Color.BLACK);pan_button.setLayout(new GridLayout(4,4,1,1));pan_button.setSize(398,358);b_dot.addActionListener(new B_dot());b_equ.addActionListener(new B_equ());b_div.addActionListener(new B_div());b_mul.addActionListener(new B_mul());b_sub.addActionListener(new B_sub());b_plu.addActionListener(new B_plu());b_0.addActionListener(new B_0());b_1.addActionListener(new B_1());b_2.addActionListener(new B_2());b_3.addActionListener(new B_3());b_4.addActionListener(new B_4());b_5.addActionListener(new B_5());b_6.addActionListener(new B_6());b_7.addActionListener(new B_7());b_8.addActionListener(new B_8());b_9.addActionListener(new B_9());}public void iniTextField() {pan_textfield.add(ta_num);pan_textfield.add(ta_num1);pan_textfield.setSize(398,298);ta_num.setFont(new java.awt.Font("宋體", Font.BOLD, 18));ta_num.setEnabled(false); //只讀 ta_num.setText("請輸入:");//顯示內容ta_num1.setFont(new java.awt.Font("宋體", Font.BOLD, 18));ta_num1.setEnabled(false); //只讀 ta_num1.setText("0");//顯示內容}@Overridepublic void actionPerformed(ActionEvent e) {// TODO 自動生成的方法存根}public class judge{public void jdg(char a) {if(a==0)//表示沒有按運算鍵if(num.length()==0)result=0;//而且沒有輸入值,如直接按等于號,elseresult=Double.parseDouble(num);//有輸入值按等于號else//考慮sign=加減乘除的四種情況,b作為計算結果顯示在下面的文本框switch (a) {case '+':result += Double.parseDouble(num);break;case '-':result -= Double.parseDouble(num); break;case '*':result *= Double.parseDouble(num); break;case '/':double aa;aa= Double.parseDouble(num); if(aa==0) {ta_num1.setText("除數不能為0");num="";str1="";result=0;break;}result = result/aa;break;}ta_num1.setText(String.valueOf(result));}}public class B_dot implements ActionListener {public void actionPerformed(ActionEvent e) {num+=".";ta_num.setText(num);}}public class B_equ extends judge implements ActionListener {public void actionPerformed(ActionEvent e) {int r;r=str1.length();if(r>0&&num.length()==0){char a[]=str1.toCharArray();if(a[r-1]<48||a[r-1]>57){ ta_num.setText("0");ta_num1.setText(String.valueOf(result));return;}} this.jdg(sign);ta_num.setText(String.valueOf(result));str1="";num=String.valueOf(result);sign='=';}//等于號之后全部歸0,返回初始狀態}public class B_div extends judge implements ActionListener {public void actionPerformed(ActionEvent e) {int r;r=str1.length();if(r>0&&num.length()==0)//str1不為空,num為空{char a[]=str1.toCharArray();if(a[r-1]<48||a[r-1]>57)//acsii碼;判斷最后一個是不是運算符{ a[str1.length()-1]=47;str1=String.valueOf(a);ta_num.setText(str1);sign='/';//是的話就變成除號/return;}}if(num.length()==0)//下空{str1=new String("0");ta_num.setText("0");}//初始狀態按÷,str1+=num+new String("÷"); //把num和運算符號加在str1后面 ta_num.setText(str1);this.jdg(sign);//執行上一個運算符;sign='/';ta_num.setText(str1);num="";//這時num沒用了,就置空方便下次輸入}}public class B_mul extends judge implements ActionListener {public void actionPerformed(ActionEvent e) {int r;r=str1.length();if(r>0&&num.length()==0){char a[]=str1.toCharArray();if(a[r-1]<48||a[r-1]>57){ a[str1.length()-1]=42;str1=String.valueOf(a);ta_num.setText(str1);sign='*';return;}}if(num.length()==0)//下空{str1=new String("1");ta_num1.setText("0");result=1;}//初始狀態按*,str1+=num+new String("*"); ta_num.setText(str1);this.jdg(sign);//執行上一個運算符;sign='*';ta_num.setText(str1);num="";}}public class B_sub extends judge implements ActionListener {public void actionPerformed(ActionEvent e) {int r;r=str1.length();if(r>0&&num.length()==0){char a[]=str1.toCharArray();if(a[r-1]<48||a[r-1]>57){ a[str1.length()-1]=45;str1=String.valueOf(a);ta_num.setText(str1);sign='-';return;}}if(num.length()==0)//下空{str1=new String("0");ta_num1.setText("0");}//初始狀態按-,str1+=num+new String("-"); ta_num.setText(str1);this.jdg(sign);//執行上一個運算符;sign='-';ta_num.setText(str1);num="";}}public class B_plu extends judge implements ActionListener {public void actionPerformed(ActionEvent e) {int r;r=str1.length();if(r>0&&num.length()==0){char a[]=str1.toCharArray();if(a[r-1]<48||a[r-1]>57){ a[str1.length()-1]=43;str1=String.valueOf(a);ta_num.setText(str1);sign='+';return;}}//對連續出現兩個運算符號進行操作 if(num.length()==0)//下空{str1=new String("0");ta_num1.setText("0");}//初始狀態按+, str1+=num+new String("+"); ta_num.setText(str1);this.jdg(sign);//執行上一個運算符;sign='+';ta_num.setText(str1);num="";}}public class B_0 implements ActionListener {public void actionPerformed(ActionEvent e) {num+=0;ta_num.setText(str1+num);}}public class B_1 implements ActionListener {public void actionPerformed(ActionEvent e) {num+=1;ta_num.setText(str1+num);}}public class B_2 implements ActionListener {public void actionPerformed(ActionEvent e) {num+=2;ta_num.setText(str1+num);}}public class B_3 implements ActionListener {public void actionPerformed(ActionEvent e) {num+=3;ta_num.setText(str1+num);}}public class B_4 implements ActionListener {public void actionPerformed(ActionEvent e) {num+=4;ta_num.setText(str1+num);}}public class B_5 implements ActionListener {public void actionPerformed(ActionEvent e) {num+=5;ta_num.setText(str1+num);}}public class B_6 implements ActionListener {public void actionPerformed(ActionEvent e) {num+=6;ta_num.setText(str1+num);}}public class B_7 implements ActionListener {public void actionPerformed(ActionEvent e) {num+=7;ta_num.setText(str1+num);}}public class B_8 implements ActionListener {public void actionPerformed(ActionEvent e) {num+=8;ta_num.setText(str1+num);}}public class B_9 implements ActionListener {public void actionPerformed(ActionEvent e) {num+=9;ta_num.setText(str1+num);}}public static void main(String[] args) {@SuppressWarnings("unused")NumComputer f = new NumComputer();} }

    總結

    以上是生活随笔為你收集整理的JAVA实现简单计算器布局与功能(附完整源码)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。