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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java正则表达式实现计算器_用java编写win7计算器

發布時間:2023/12/20 java 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java正则表达式实现计算器_用java编写win7计算器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

展開全部

參考代碼:62616964757a686964616fe78988e69d8331333337393635import?java.awt.*;

import?java.awt.event.*;

import?java.math.BigDecimal;

import?javax.swing.*;

//創建計算器Calculator類,實現ActionListener接口

public?class?Calculater?implements?ActionListener?{

//定義變量和按鈕數組

private?String[]?names?=?{"Backspace","CE","C","+","7","8","9","-",

"4","5","6","*","1","2","3","/","0","+/-",".","="

};

private?JButton[]?buttonArray?=?new?JButton[names.length];

private?boolean?append?=?false;//默認追加為false

private?String?operator?=?"+";//默認運算符為“+”

private?String?s1?=?"0";//默認字符為0

private?String?ss?=?"0";//默認字符為0

//創建可以顯示20個字符的文本框

JTextField?jtf?=?new?JTextField(20);

//構造方法

public?Calculater()?{}

public?Calculater(String?title)?{

//創建窗口、面板,并設置面板布局為網格布局

JFrame?jf?=?new?JFrame(title);

JPanel?jp?=?new?JPanel();

jp.setLayout(new?GridLayout(5,4));

//依次添加按鈕到面板中,并為按鈕注冊監聽器

for?(int?i?=?0;?i?

buttonArray[i]?=?new?JButton(names[i]);

buttonArray[i].addActionListener(this);

jp.add(buttonArray[i]);

}

//添加文本框到窗體中

jf.add(jtf,BorderLayout.NORTH);

jf.add(jp);//添加面板到窗體中

jtf.setHorizontalAlignment(JTextField.RIGHT);//設置文本框的水平方向為右

jtf.setText("0");//設置初始文本為0

jtf.setEditable(false);//設置文本框為不可編輯狀態

//設置窗體屬性

jf.pack();//系統自動設置大小和位置

jf.setVisible(true);

jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

//實現監聽接口的actionPerformed方法

public?void?actionPerformed(ActionEvent?e)?{

String?comm?=?e.getActionCommand();

if(comm.matches("\\d"))?{?//用正則表達式判斷輸出的是否是0~9

if(append)?{?//如果是,追加顯示

String?temp?=?jtf.getText();

jtf.setText(temp?+?comm);

}?else?{?//如果不是,顯示該字符并將追加設置為true

jtf.setText(comm);

append?=?true;

}

}?else?if(comm.equals("."))?{?//輸入小數點時

String?temp?=?jtf.getText();

if(temp.indexOf(".")==?-1?&&?append)?{?//當輸入的文本中沒有小數點時

jtf.setText(temp+comm);

append?=?true;//輸入小數點后繼續追加

}?else?if(!append)?{//當字符串開始時候先輸入?"?.?"?則直接輸出"?0.?"

jtf.setText("0"+comm);

append?=?true;

}

}?else?if("+-*/".indexOf(comm)!=?-1)?{?//輸入加減乘除符號時,

//以下運算應該注意數據類型,尤其是大數字和浮點數及int數在運算中的區別

operator?=?comm;

s1?=?jtf.getText();

double?d3?=?Double.parseDouble(s1);

double?d4?=?Double.parseDouble(ss);

BigDecimal?bd3?=?new?BigDecimal(d3+"");

BigDecimal?bd4?=?new?BigDecimal(d4+"");

if(operator.equals("+"))?{?//加法時

d3?=?bd3.add(bd4).doubleValue();

ss?=?d3+"";

jtf.setText(ss);

}?else?if(operator.equals("-"))?{?//減法時

if(d4?==?0.0)?{

ss?=?s1;

jtf.setText(ss);

}?else?{

d3?=?bd4.subtract(bd3).doubleValue();

ss?=?d3+"";

jtf.setText(ss);

}

}?else?if(operator.equals("*"))?{?//乘法時

if(d4?==?0.0)?{

ss?=?s1;

jtf.setText(ss);

}?else?{

d3?=?bd3.multiply(bd4).doubleValue();

ss?=?d3+"";

jtf.setText(ss);

}

}?else?if(operator.equals("/"))?{?//除法時

if(d4?==?0.0)?{

ss?=?s1;

jtf.setText(s1);

}?else?{

d3?=?bd4.divide(bd3,15,BigDecimal.ROUND_HALF_UP).doubleValue();

}

ss?=?d3+"";

jtf.setText(ss);

}

append?=?false;//不繼續追加

}?else?if(comm.equals("="))?{?//輸入等號時,計算加減乘除的結果

String?s2?=?jtf.getText();

double?d1?=?Double.parseDouble(ss);

double?d2?=?Double.parseDouble(s2);

BigDecimal?bd1?=?new?BigDecimal(d1+"");

BigDecimal?bd2?=?new?BigDecimal(d2+"");

if(operator.equals("+"))?{

d1?=?bd1.add(bd2).doubleValue();

}?else?if(operator.equals("-"))?{

d1?=?bd1.subtract(bd2).doubleValue();

}?else?if(operator.equals("*"))?{

d1?=?bd1.multiply(bd2).doubleValue();

}?else?if(operator.equals("/"))?{?//精確計算浮點除法

if(d2!=0.0)?{

d1?=?bd1.divide(bd2,15,BigDecimal.ROUND_HALF_UP).doubleValue();

}

}

ss?=?"0";

jtf.setText(d1+"");

append?=?false;//不繼續追加

}?else?if(comm.equals("CE")||comm.equals("C"))?{?//輸入CE或C時

jtf.setText("0");

ss?=?"0";

append?=?false;

}?else?if(comm.equals("+/-"))?{?//改變數值的正負號

String?temp?=?jtf.getText();

if(!append)?{

jtf.setText("-");

append?=?true;

}?else?if(temp.startsWith("-"))?{?//如果字符串以負號開頭

jtf.setText(temp.substring(1));

}?else?{

jtf.setText("-"?+?temp);

}

}?else?if(comm.equals("Backspace"))?{?//輸入Backspace時,退回一個字符

String?temp?=?jtf.getText();

if(temp.length()>0)

jtf.setText(temp.substring(0,temp.length()-1));

}

}

//主方法

public?static?void?main(String[]?args)?{

//創建名為Calculator的計算器對象

new?Calculater("計算器");

}

}

總結

以上是生活随笔為你收集整理的Java正则表达式实现计算器_用java编写win7计算器的全部內容,希望文章能夠幫你解決所遇到的問題。

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