From 952ce3586da149f1e82ab708dd9815f38314f100 Mon Sep 17 00:00:00 2001 From: esther <1992630233@qq.com> Date: Sun, 22 May 2022 08:49:50 +0800 Subject: [PATCH 01/15] =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E4=BA=86=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E5=99=A8=E7=9A=84=E5=9F=BA=E6=9C=AC=E6=A1=86=E6=9E=B6?= =?UTF-8?q?=EF=BC=8C=E5=88=9D=E5=A7=8B=E5=8C=96=E5=A5=BD=E4=BA=86=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E5=8F=8A=E4=B8=89=E4=B8=AA=E5=88=86=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/Calculator.java | 72 ++++++++++++++++++++ src/java2022spring/{Test.java => Start.java} | 18 +++-- src/java2022spring/panel1.java | 19 ++++++ src/java2022spring/panel2.java | 21 ++++++ 4 files changed, 123 insertions(+), 7 deletions(-) create mode 100644 src/java2022spring/Calculator.java rename src/java2022spring/{Test.java => Start.java} (39%) create mode 100644 src/java2022spring/panel1.java create mode 100644 src/java2022spring/panel2.java diff --git a/src/java2022spring/Calculator.java b/src/java2022spring/Calculator.java new file mode 100644 index 0000000..c1fbe4d --- /dev/null +++ b/src/java2022spring/Calculator.java @@ -0,0 +1,72 @@ +package java2022spring; + +import java.awt.*; +import javax.swing.*; +import javax.swing.border.EmptyBorder; + +import java.awt.event.*; +import java.util.LinkedList; +import java.util.Scanner; + +public class Calculator extends JFrame implements ActionListener { + private JPanel contentPane; //内容面板 + CardLayout cardLayout=new CardLayout(); + JPanel mainp,p0; //主面板 + JPanel trans,equation; // + panel1 basic; + panel2 advance; //(extends panel)的替换面板 + JMenuBar menubar; + JMenu jichu,jinjie,more; + //JMenu huansuan,jfc;子菜单 + JButton huansuan,jfc; + //初始化设计 + Calculator(){ + menubar=new JMenuBar(); + jichu=new JMenu("基础"); + jinjie=new JMenu("进阶"); + more=new JMenu("More"); + huansuan=new JButton("换算"); //子菜单的按钮 + jfc=new JButton("解方程"); + p0=new JPanel(); + p0.add(jfc); + p0.add(huansuan); + more.add(p0); + menubar.add(jichu); + menubar.add(jinjie); + menubar.add(more); + setJMenuBar(menubar); + + + contentPane=new JPanel(); + contentPane.setBorder(new EmptyBorder(5,5,5,5)); + setContentPane(contentPane); + contentPane.setLayout(null); + mainp=new JPanel(); + mainp.setBounds(95,95,445,495); + contentPane.add(mainp); + mainp.setLayout(cardLayout); //设置成cardLayout便于窗口切换 + basic=new panel1(); //设置card1 + mainp.add("p1",basic); + advance=new panel2(); //设置card2 + mainp.add("p2",advance); + + + + + setTitle("lqy's calculator"); + setBounds(100, 100, 450, 500); + setVisible(true); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + } + + public void actionPerformed(ActionEvent e) { + // TODO 自动生成的方法存根 + + } + //按键设计 + + //算术优先级设计 + + +} diff --git a/src/java2022spring/Test.java b/src/java2022spring/Start.java similarity index 39% rename from src/java2022spring/Test.java rename to src/java2022spring/Start.java index 24deb29..7c6f3af 100644 --- a/src/java2022spring/Test.java +++ b/src/java2022spring/Start.java @@ -1,7 +1,11 @@ -package java2022spring; - -public class Test { - public static void main(String[] args) { - System.out.println("Hello world!"); - } -} +package java2022spring; +import javax.swing.JFrame; + +public class Start { + static Calculator superr; + public static void main(String[] args) { + superr=new Calculator(); + + } + +} diff --git a/src/java2022spring/panel1.java b/src/java2022spring/panel1.java new file mode 100644 index 0000000..05b6feb --- /dev/null +++ b/src/java2022spring/panel1.java @@ -0,0 +1,19 @@ +package java2022spring; +import javax.swing.JPanel; +import javax.swing.JLabel; +import java.awt.Font; +import javax.swing.JTextField; +import javax.swing.JButton; + +public class panel1 extends JPanel { + private JTextField jt1; + + /** + * Create the panel. + */ + public panel1() { + setLayout(null); + + + } +} diff --git a/src/java2022spring/panel2.java b/src/java2022spring/panel2.java new file mode 100644 index 0000000..6f5bdfc --- /dev/null +++ b/src/java2022spring/panel2.java @@ -0,0 +1,21 @@ +package java2022spring; + + + +import javax.swing.JPanel; +import javax.swing.JLabel; +import java.awt.Font; +import javax.swing.JButton; +import javax.swing.JTextField; + +public class panel2 extends JPanel { + + /** + * Create the panel. + */ + public panel2() { + setLayout(null); + + + } +} \ No newline at end of file -- Gitee From b22c2be160078c024d72c407dbaf64cc5c9c08c4 Mon Sep 17 00:00:00 2001 From: esther <1992630233@qq.com> Date: Mon, 23 May 2022 23:42:45 +0800 Subject: [PATCH 02/15] =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E5=A5=BD=E4=BA=86?= =?UTF-8?q?=E7=AE=80=E5=8D=95=E8=AE=A1=E7=AE=97=E5=99=A8=E5=92=8C=E7=A7=91?= =?UTF-8?q?=E5=AD=A6=E8=AE=A1=E7=AE=97=E5=99=A8=E7=9A=84=E7=89=88=E9=9D=A2?= =?UTF-8?q?=EF=BC=8C=E6=B7=BB=E5=8A=A0=E4=BA=86=E6=8C=89=E9=92=AE=EF=BC=8C?= =?UTF-8?q?=E5=B9=B6=E5=AF=B9=E8=BE=93=E5=87=BA=E6=96=87=E6=9C=AC=E6=A1=86?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E4=BA=86=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/Calculator.java | 45 ++++++++------ src/java2022spring/panel1.java | 99 +++++++++++++++++++++++++----- src/java2022spring/panel2.java | 96 ++++++++++++++++++++++++++--- 3 files changed, 197 insertions(+), 43 deletions(-) diff --git a/src/java2022spring/Calculator.java b/src/java2022spring/Calculator.java index c1fbe4d..ed10751 100644 --- a/src/java2022spring/Calculator.java +++ b/src/java2022spring/Calculator.java @@ -8,17 +8,16 @@ import java.awt.event.*; import java.util.LinkedList; import java.util.Scanner; -public class Calculator extends JFrame implements ActionListener { - private JPanel contentPane; //内容面板 +public class Calculator extends JFrame implements ActionListener { CardLayout cardLayout=new CardLayout(); - JPanel mainp,p0; //主面板 - JPanel trans,equation; // + JPanel mainp; //主面板 + JPanel p0; //子菜单触发事件的面板 panel1 basic; panel2 advance; //(extends panel)的替换面板 JMenuBar menubar; JMenu jichu,jinjie,more; - //JMenu huansuan,jfc;子菜单 - JButton huansuan,jfc; + + JButton huansuan,jfc,turn1,turn2; //子菜单的按钮 //初始化设计 Calculator(){ menubar=new JMenuBar(); @@ -27,42 +26,48 @@ public class Calculator extends JFrame implements ActionListener { more=new JMenu("More"); huansuan=new JButton("换算"); //子菜单的按钮 jfc=new JButton("解方程"); + turn1=new JButton("跳转1"); + turn2=new JButton("跳转2"); + turn1.addActionListener(this); + turn2.addActionListener(this); p0=new JPanel(); + p0.setLayout(new GridLayout(2,1)); p0.add(jfc); p0.add(huansuan); + jichu.add(turn1); + jinjie.add(turn2); more.add(p0); menubar.add(jichu); menubar.add(jinjie); menubar.add(more); setJMenuBar(menubar); - - contentPane=new JPanel(); - contentPane.setBorder(new EmptyBorder(5,5,5,5)); - setContentPane(contentPane); - contentPane.setLayout(null); + + mainp=new JPanel(); - mainp.setBounds(95,95,445,495); - contentPane.add(mainp); mainp.setLayout(cardLayout); //设置成cardLayout便于窗口切换 basic=new panel1(); //设置card1 mainp.add("p1",basic); advance=new panel2(); //设置card2 mainp.add("p2",advance); + add(mainp); - - - - setTitle("lqy's calculator"); - setBounds(100, 100, 450, 500); + + + + setTitle("lqy's supercalculator"); + setBounds(100, 100, 450, 600); + setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void actionPerformed(ActionEvent e) { - // TODO 自动生成的方法存根 - + if(e.getActionCommand()=="跳转1") + cardLayout.show(mainp, "p1"); + else if(e.getActionCommand()=="跳转2") + cardLayout.show(mainp, "p2"); } //按键设计 diff --git a/src/java2022spring/panel1.java b/src/java2022spring/panel1.java index 05b6feb..40279a2 100644 --- a/src/java2022spring/panel1.java +++ b/src/java2022spring/panel1.java @@ -1,19 +1,90 @@ package java2022spring; -import javax.swing.JPanel; -import javax.swing.JLabel; -import java.awt.Font; -import javax.swing.JTextField; -import javax.swing.JButton; +import javax.swing.*; +import java.awt.*; +import java.awt.event.*; + -public class panel1 extends JPanel { - private JTextField jt1; - - /** - * Create the panel. - */ - public panel1() { - setLayout(null); +public class panel1 extends JPanel implements ItemListener,ActionListener{ + JPanel total; + JPanel keyboard; + JPanel sp1,sp2; + JTextField textin,textout; + String [] button={"C","÷","×","CE", + + "7","8","9","-", + + "4","5","6","+", + + "1","2","3","sqrt", + + "%","0",".","="}; + String [] function= {"MC","M+","M-","MR"}; + JButton bs[] = new JButton[button.length]; + JButton fs[]=new JButton[function.length]; + + + //panel1的版面设计 + panel1() { + + sp1=new JPanel(); + sp2=new JPanel(); + + total=new JPanel(); + keyboard=new JPanel(); + textin=new JTextField(30); //输入输出文本框 + textout=new JTextField(30); + textin.setFont(new java.awt.Font("黑体", Font.PLAIN, 40)); + textout.setFont(new java.awt.Font("黑体", Font.PLAIN, 40)); + setBackground(Color.cyan); + textin.setPreferredSize(new Dimension(400, 60)); + textout.setPreferredSize(new Dimension(400, 65)); + textout.setEnabled(false); + textout.setBackground(Color.lightGray); + textin.setHorizontalAlignment(SwingConstants.RIGHT); + textout.setHorizontalAlignment(SwingConstants.RIGHT); + + + //设置keyboard 400lenghth 450width + for(int i=0;i<4;i++) { + fs[i]=new JButton(function[i]); + sp1.add(fs[i]); + } + for(int i=0;i Date: Tue, 24 May 2022 11:13:53 +0000 Subject: [PATCH 03/15] add LICENSE. --- LICENSE | 127 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..ee58399 --- /dev/null +++ b/LICENSE @@ -0,0 +1,127 @@ + 鏈ㄥ叞瀹芥澗璁稿彲璇, 绗2鐗 + + 鏈ㄥ叞瀹芥澗璁稿彲璇侊紝 绗2鐗 + 2020骞1鏈 http://license.coscl.org.cn/MulanPSL2 + + + 鎮ㄥ鈥滆蒋浠垛濈殑澶嶅埗銆佷娇鐢ㄣ佷慨鏀瑰強鍒嗗彂鍙楁湪鍏板鏉捐鍙瘉锛岀2鐗堬紙鈥滄湰璁稿彲璇佲濓級鐨勫涓嬫潯娆剧殑绾︽潫锛 + + 0. 瀹氫箟 + + 鈥滆蒋浠垛濇槸鎸囩敱鈥滆础鐚濇瀯鎴愮殑璁稿彲鍦ㄢ滄湰璁稿彲璇佲濅笅鐨勭▼搴忓拰鐩稿叧鏂囨。鐨勯泦鍚堛 + + 鈥滆础鐚濇槸鎸囩敱浠讳竴鈥滆础鐚呪濊鍙湪鈥滄湰璁稿彲璇佲濅笅鐨勫彈鐗堟潈娉曚繚鎶ょ殑浣滃搧銆 + + 鈥滆础鐚呪濇槸鎸囧皢鍙楃増鏉冩硶淇濇姢鐨勪綔鍝佽鍙湪鈥滄湰璁稿彲璇佲濅笅鐨勮嚜鐒朵汉鎴栤滄硶浜哄疄浣撯濄 + + 鈥滄硶浜哄疄浣撯濇槸鎸囨彁浜よ础鐚殑鏈烘瀯鍙婂叾鈥滃叧鑱斿疄浣撯濄 + + 鈥滃叧鑱斿疄浣撯濇槸鎸囷紝瀵光滄湰璁稿彲璇佲濅笅鐨勮涓烘柟鑰岃█锛屾帶鍒躲佸彈鎺у埗鎴栦笌鍏跺叡鍚屽彈鎺у埗鐨勬満鏋勶紝姝ゅ鐨勬帶鍒舵槸鎸囨湁鍙楁帶鏂规垨鍏卞悓鍙楁帶鏂硅嚦灏50%鐩存帴鎴栭棿鎺ョ殑鎶曠エ鏉冦佽祫閲戞垨鍏朵粬鏈変环璇佸埜銆 + + 1. 鎺堜簣鐗堟潈璁稿彲 + + 姣忎釜鈥滆础鐚呪濇牴鎹滄湰璁稿彲璇佲濇巿浜堟偍姘镐箙鎬х殑銆佸叏鐞冩х殑銆佸厤璐圭殑銆侀潪鐙崰鐨勩佷笉鍙挙閿鐨勭増鏉冭鍙紝鎮ㄥ彲浠ュ鍒躲佷娇鐢ㄣ佷慨鏀广佸垎鍙戝叾鈥滆础鐚濓紝涓嶈淇敼涓庡惁銆 + + 2. 鎺堜簣涓撳埄璁稿彲 + + 姣忎釜鈥滆础鐚呪濇牴鎹滄湰璁稿彲璇佲濇巿浜堟偍姘镐箙鎬х殑銆佸叏鐞冩х殑銆佸厤璐圭殑銆侀潪鐙崰鐨勩佷笉鍙挙閿鐨勶紙鏍规嵁鏈潯瑙勫畾鎾ら攢闄ゅ锛変笓鍒╄鍙紝渚涙偍鍒堕犮佸鎵樺埗閫犮佷娇鐢ㄣ佽璇洪攢鍞侀攢鍞佽繘鍙e叾鈥滆础鐚濇垨浠ュ叾浠栨柟寮忚浆绉诲叾鈥滆础鐚濄傚墠杩颁笓鍒╄鍙粎闄愪簬鈥滆础鐚呪濈幇鍦ㄦ垨灏嗘潵鎷ユ湁鎴栨帶鍒剁殑鍏垛滆础鐚濇湰韬垨鍏垛滆础鐚濅笌璁稿彲鈥滆础鐚濇椂鐨勨滆蒋浠垛濈粨鍚堣屽皢蹇呯劧浼氫镜鐘殑涓撳埄鏉冨埄瑕佹眰锛屼笉鍖呮嫭瀵光滆础鐚濈殑淇敼鎴栧寘鍚滆础鐚濈殑鍏朵粬缁撳悎銆傚鏋滄偍鎴栨偍鐨勨滃叧鑱斿疄浣撯濈洿鎺ユ垨闂存帴鍦帮紝灏扁滆蒋浠垛濇垨鍏朵腑鐨勨滆础鐚濆浠讳綍浜哄彂璧蜂笓鍒╀镜鏉冭瘔璁硷紙鍖呮嫭鍙嶈瘔鎴栦氦鍙夎瘔璁硷級鎴栧叾浠栦笓鍒╃淮鏉冭鍔紝鎸囨帶鍏朵镜鐘笓鍒╂潈锛屽垯鈥滄湰璁稿彲璇佲濇巿浜堟偍瀵光滆蒋浠垛濈殑涓撳埄璁稿彲鑷偍鎻愯捣璇夎鎴栧彂璧风淮鏉冭鍔ㄤ箣鏃ョ粓姝€ + + 3. 鏃犲晢鏍囪鍙 + + 鈥滄湰璁稿彲璇佲濅笉鎻愪緵瀵光滆础鐚呪濈殑鍟嗗搧鍚嶇О銆佸晢鏍囥佹湇鍔℃爣蹇楁垨浜у搧鍚嶇О鐨勫晢鏍囪鍙紝浣嗘偍涓烘弧瓒崇4鏉¤瀹氱殑澹版槑涔夊姟鑰屽繀椤讳娇鐢ㄩ櫎澶栥 + + 4. 鍒嗗彂闄愬埗 + + 鎮ㄥ彲浠ュ湪浠讳綍濯掍粙涓皢鈥滆蒋浠垛濅互婧愮▼搴忓舰寮忔垨鍙墽琛屽舰寮忛噸鏂板垎鍙戯紝涓嶈淇敼涓庡惁锛屼絾鎮ㄥ繀椤诲悜鎺ユ敹鑰呮彁渚涒滄湰璁稿彲璇佲濈殑鍓湰锛屽苟淇濈暀鈥滆蒋浠垛濅腑鐨勭増鏉冦佸晢鏍囥佷笓鍒╁強鍏嶈矗澹版槑銆 + + 5. 鍏嶈矗澹版槑涓庤矗浠婚檺鍒 + + 鈥滆蒋浠垛濆強鍏朵腑鐨勨滆础鐚濆湪鎻愪緵鏃朵笉甯︿换浣曟槑绀烘垨榛樼ず鐨勬媴淇濄傚湪浠讳綍鎯呭喌涓嬶紝鈥滆础鐚呪濇垨鐗堟潈鎵鏈夎呬笉瀵逛换浣曚汉鍥犱娇鐢ㄢ滆蒋浠垛濇垨鍏朵腑鐨勨滆础鐚濊屽紩鍙戠殑浠讳綍鐩存帴鎴栭棿鎺ユ崯澶辨壙鎷呰矗浠伙紝涓嶈鍥犱綍绉嶅師鍥犲鑷存垨鑰呭熀浜庝綍绉嶆硶寰嬬悊璁猴紝鍗充娇鍏舵浘琚缓璁湁姝ょ鎹熷け鐨勫彲鑳芥с + + 6. 璇█ + 鈥滄湰璁稿彲璇佲濅互涓嫳鏂囧弻璇〃杩帮紝涓嫳鏂囩増鏈叿鏈夊悓绛夋硶寰嬫晥鍔涖傚鏋滀腑鑻辨枃鐗堟湰瀛樺湪浠讳綍鍐茬獊涓嶄竴鑷达紝浠ヤ腑鏂囩増涓哄噯銆 + + 鏉℃缁撴潫 + + 濡備綍灏嗘湪鍏板鏉捐鍙瘉锛岀2鐗堬紝搴旂敤鍒版偍鐨勮蒋浠 + + 濡傛灉鎮ㄥ笇鏈涘皢鏈ㄥ叞瀹芥澗璁稿彲璇侊紝绗2鐗堬紝搴旂敤鍒版偍鐨勬柊杞欢锛屼负浜嗘柟渚挎帴鏀惰呮煡闃咃紝寤鸿鎮ㄥ畬鎴愬涓嬩笁姝ワ細 + + 1锛 璇锋偍琛ュ厖濡備笅澹版槑涓殑绌虹櫧锛屽寘鎷蒋浠跺悕銆佽蒋浠剁殑棣栨鍙戣〃骞翠唤浠ュ強鎮ㄤ綔涓虹増鏉冧汉鐨勫悕瀛楋紱 + + 2锛 璇锋偍鍦ㄨ蒋浠跺寘鐨勪竴绾х洰褰曚笅鍒涘缓浠モ淟ICENSE鈥濅负鍚嶇殑鏂囦欢锛屽皢鏁翠釜璁稿彲璇佹枃鏈斁鍏ヨ鏂囦欢涓紱 + + 3锛 璇峰皢濡備笅澹版槑鏂囨湰鏀惧叆姣忎釜婧愭枃浠剁殑澶撮儴娉ㄩ噴涓 + + Copyright (c) [Year] [name of copyright holder] + [Software Name] is licensed under Mulan PSL v2. + You can use this software according to the terms and conditions of the Mulan PSL v2. + You may obtain a copy of Mulan PSL v2 at: + http://license.coscl.org.cn/MulanPSL2 + THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + See the Mulan PSL v2 for more details. + + + Mulan Permissive Software License锛孷ersion 2 + + Mulan Permissive Software License锛孷ersion 2 (Mulan PSL v2) + January 2020 http://license.coscl.org.cn/MulanPSL2 + + Your reproduction, use, modification and distribution of the Software shall be subject to Mulan PSL v2 (this License) with the following terms and conditions: + + 0. Definition + + Software means the program and related documents which are licensed under this License and comprise all Contribution(s). + + Contribution means the copyrightable work licensed by a particular Contributor under this License. + + Contributor means the Individual or Legal Entity who licenses its copyrightable work under this License. + + Legal Entity means the entity making a Contribution and all its Affiliates. + + Affiliates means entities that control, are controlled by, or are under common control with the acting entity under this License, 鈥榗ontrol鈥 means direct or indirect ownership of at least fifty percent (50%) of the voting power, capital or other securities of controlled or commonly controlled entity. + + 1. Grant of Copyright License + + Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable copyright license to reproduce, use, modify, or distribute its Contribution, with modification or not. + + 2. Grant of Patent License + + Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable (except for revocation under this Section) patent license to make, have made, use, offer for sale, sell, import or otherwise transfer its Contribution, where such patent license is only limited to the patent claims owned or controlled by such Contributor now or in future which will be necessarily infringed by its Contribution alone, or by combination of the Contribution with the Software to which the Contribution was contributed. The patent license shall not apply to any modification of the Contribution, and any other combination which includes the Contribution. If you or your Affiliates directly or indirectly institute patent litigation (including a cross claim or counterclaim in a litigation) or other patent enforcement activities against any individual or entity by alleging that the Software or any Contribution in it infringes patents, then any patent license granted to you under this License for the Software shall terminate as of the date such litigation or activity is filed or taken. + + 3. No Trademark License + + No trademark license is granted to use the trade names, trademarks, service marks, or product names of Contributor, except as required to fulfill notice requirements in Section 4. + + 4. Distribution Restriction + + You may distribute the Software in any medium with or without modification, whether in source or executable forms, provided that you provide recipients with a copy of this License and retain copyright, patent, trademark and disclaimer statements in the Software. + + 5. Disclaimer of Warranty and Limitation of Liability + + THE SOFTWARE AND CONTRIBUTION IN IT ARE PROVIDED WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL ANY CONTRIBUTOR OR COPYRIGHT HOLDER BE LIABLE TO YOU FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO ANY DIRECT, OR INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING FROM YOUR USE OR INABILITY TO USE THE SOFTWARE OR THE CONTRIBUTION IN IT, NO MATTER HOW IT鈥橲 CAUSED OR BASED ON WHICH LEGAL THEORY, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + 6. Language + + THIS LICENSE IS WRITTEN IN BOTH CHINESE AND ENGLISH, AND THE CHINESE VERSION AND ENGLISH VERSION SHALL HAVE THE SAME LEGAL EFFECT. IN THE CASE OF DIVERGENCE BETWEEN THE CHINESE AND ENGLISH VERSIONS, THE CHINESE VERSION SHALL PREVAIL. + + END OF THE TERMS AND CONDITIONS + + How to Apply the Mulan Permissive Software License锛孷ersion 2 (Mulan PSL v2) to Your Software + + To apply the Mulan PSL v2 to your work, for easy identification by recipients, you are suggested to complete following three steps: + + i Fill in the blanks in following statement, including insert your software name, the year of the first publication of your software, and your name identified as the copyright owner; + + ii Create a file named 鈥淟ICENSE鈥 which contains the whole context of this License in the first directory of your software package; + + iii Attach the statement to the appropriate annotated syntax at the beginning of each source file. + + + Copyright (c) [Year] [name of copyright holder] + [Software Name] is licensed under Mulan PSL v2. + You can use this software according to the terms and conditions of the Mulan PSL v2. + You may obtain a copy of Mulan PSL v2 at: + http://license.coscl.org.cn/MulanPSL2 + THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + See the Mulan PSL v2 for more details. -- Gitee From 313c741f3c5c9318cb4149fd199df3a1d6d1b786 Mon Sep 17 00:00:00 2001 From: esther <1992630233@qq.com> Date: Sat, 28 May 2022 09:45:49 +0800 Subject: [PATCH 04/15] =?UTF-8?q?=E5=9C=A8=E9=9D=A2=E6=9D=BF1=E4=B8=AD?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E5=AE=8C=E6=88=90=E6=95=B0=E5=AD=970-9?= =?UTF-8?q?=E9=94=AE=E7=9A=84=E5=8A=9F=E8=83=BD=EF=BC=8C=E5=B9=B6=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E4=BA=86=E5=8A=A0=E5=87=8F=E4=B9=98=E9=99=A4=E7=9A=84?= =?UTF-8?q?=E8=BF=90=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/Calculator.java | 2 +- src/java2022spring/panel1.java | 120 +++++++++++++++++++++++++---- src/java2022spring/panel2.java | 2 +- 3 files changed, 105 insertions(+), 19 deletions(-) diff --git a/src/java2022spring/Calculator.java b/src/java2022spring/Calculator.java index ed10751..76a7202 100644 --- a/src/java2022spring/Calculator.java +++ b/src/java2022spring/Calculator.java @@ -55,7 +55,7 @@ public class Calculator extends JFrame implements ActionListener { - setTitle("lqy's supercalculator"); + setTitle("Your supercalculator"); setBounds(100, 100, 450, 600); setVisible(true); diff --git a/src/java2022spring/panel1.java b/src/java2022spring/panel1.java index 40279a2..b886eac 100644 --- a/src/java2022spring/panel1.java +++ b/src/java2022spring/panel1.java @@ -4,7 +4,7 @@ import java.awt.*; import java.awt.event.*; -public class panel1 extends JPanel implements ItemListener,ActionListener{ +public class panel1 extends JPanel implements ActionListener{ JPanel total; JPanel keyboard; JPanel sp1,sp2; @@ -21,8 +21,15 @@ public class panel1 extends JPanel implements ItemListener,ActionListener{ String [] function= {"MC","M+","M-","MR"}; JButton bs[] = new JButton[button.length]; JButton fs[]=new JButton[function.length]; - - + String str1="",str2="",showin="",showout=""; + int alg=0; + Boolean end=false; + double x,y,result=1; + + int isequal=0; //判断等号是否出现 + int point=0; //判断小数点是否出现 + + //panel1的版面设计 panel1() { @@ -39,18 +46,19 @@ public class panel1 extends JPanel implements ItemListener,ActionListener{ textin.setPreferredSize(new Dimension(400, 60)); textout.setPreferredSize(new Dimension(400, 65)); textout.setEnabled(false); - textout.setBackground(Color.lightGray); + // textout.setBackground(Color.lightGray); textin.setHorizontalAlignment(SwingConstants.RIGHT); textout.setHorizontalAlignment(SwingConstants.RIGHT); - //设置keyboard 400lenghth 450width + //设置keyboard for(int i=0;i<4;i++) { fs[i]=new JButton(function[i]); - sp1.add(fs[i]); + sp1.add(fs[i]); //West 1×4 } for(int i=0;i30||isequal==1) { //输入框超出30行或已按下等号停止输入 + } + else if(textin.getText()=="") { + textin.setText(str1); //若为空则输入按下数字 + } + else if(textin.getText()=="0") { + textin.setText("error!请输入小数点!"); //数字不能使用0开头 + } + else { + textin.setText(str1+e.getActionCommand()); + } + } + + //小数点 + if(e.getActionCommand().equals(".")) { + + } + + + //下面设置加减乘除 + + if(e.getSource()==bs[11]&&str2=="") { + str2=str1; + str1=""; + + alg=1; + + } + + if(e.getSource()==bs[19]&&alg==1) { + x=Double.parseDouble(str1); + y=Double.parseDouble(str2); + result=x+y; + str1=""+result; + textout.setText(str1); + alg=0; + + } //加法运算 + if(e.getSource()==bs[7]&&str2=="") { + str2=str1; + str1=""; + alg=2; + textin.setText("-"); + } + if(e.getSource()==bs[19]&&alg==2) { + x=Double.parseDouble(str1); + y=Double.parseDouble(str2); + result=x-y; + str1=""+result; + textout.setText(str2+"-"+str1); + alg=0; + + } //减法运算 + } diff --git a/src/java2022spring/panel2.java b/src/java2022spring/panel2.java index a0af168..29705bc 100644 --- a/src/java2022spring/panel2.java +++ b/src/java2022spring/panel2.java @@ -50,7 +50,7 @@ public class panel2 extends JPanel implements ActionListener{ textin.setFont(new java.awt.Font("黑体", Font.PLAIN, 40)); textout.setFont(new java.awt.Font("黑体", Font.PLAIN, 40)); setBackground(Color.cyan); - textout.setBackground(Color.lightGray); + // textout.setBackground(Color.lightGray); textin.setPreferredSize(new Dimension(400, 60)); textout.setPreferredSize(new Dimension(400, 65)); textout.setEnabled(false); -- Gitee From a69f02016784c32ffd5d2903fee46c4f2cf67a0d Mon Sep 17 00:00:00 2001 From: esther <1992630233@qq.com> Date: Sat, 28 May 2022 12:51:50 +0800 Subject: [PATCH 05/15] =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E4=BA=86=E7=AE=80?= =?UTF-8?q?=E5=8D=95=E8=AE=A1=E7=AE=97=E5=99=A8=E7=9A=840-9=E6=8C=89?= =?UTF-8?q?=E9=94=AE=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/panel1.java | 74 +++++++--------------------------- 1 file changed, 14 insertions(+), 60 deletions(-) diff --git a/src/java2022spring/panel1.java b/src/java2022spring/panel1.java index b886eac..99499b1 100644 --- a/src/java2022spring/panel1.java +++ b/src/java2022spring/panel1.java @@ -21,9 +21,7 @@ public class panel1 extends JPanel implements ActionListener{ String [] function= {"MC","M+","M-","MR"}; JButton bs[] = new JButton[button.length]; JButton fs[]=new JButton[function.length]; - String str1="",str2="",showin="",showout=""; - int alg=0; - Boolean end=false; + String str1="",str2=""; double x,y,result=1; int isequal=0; //判断等号是否出现 @@ -38,7 +36,7 @@ public class panel1 extends JPanel implements ActionListener{ total=new JPanel(); keyboard=new JPanel(); - textin=new JTextField(30); //输入输出文本框 + textin=new JTextField(20); //输入输出文本框 textout=new JTextField(30); textin.setFont(new java.awt.Font("黑体", Font.PLAIN, 40)); textout.setFont(new java.awt.Font("黑体", Font.PLAIN, 40)); @@ -93,16 +91,8 @@ public class panel1 extends JPanel implements ActionListener{ //触发事件实现功能 public void actionPerformed(ActionEvent e) { - /* if(textin.getText()==""&&e.getSource()==bs[19]) { - try { - throw new java.lang.NumberFormatException(); - } - - catch (java.lang.NumberFormatException ee) { - textin.setText("请输入内容!"); - } - }*/ - //清除输出框内容 + + //按下C清除输出框内容 if (e.getActionCommand().equals("C")) { str1 = ""; str2 = ""; @@ -112,19 +102,18 @@ public class panel1 extends JPanel implements ActionListener{ //数字1-9 if(e.getSource().equals(bs[4])||e.getSource().equals(bs[5])||e.getSource().equals(bs[6])|| e.getSource().equals(bs[8])||e.getSource().equals(bs[9])||e.getSource().equals(bs[10])|| - e.getSource().equals(bs[12])||e.getSource().equals(bs[13])||e.getSource().equals(bs[14])||e.getSource().equals(bs[17])) { + e.getSource().equals(bs[12])||e.getSource().equals(bs[13])||e.getSource().equals(bs[14])|| + e.getSource().equals(bs[17])) { str1=textin.getText(); - if(str1.length()>30||isequal==1) { //输入框超出30行或已按下等号停止输入 - } - else if(textin.getText()=="") { - textin.setText(str1); //若为空则输入按下数字 + if(str1.equals("")) { + textin.setText(e.getActionCommand()); //若为空则输入按下数字 } - else if(textin.getText()=="0") { - textin.setText("error!请输入小数点!"); //数字不能使用0开头 - } - else { + else if(str1.equals("0")) { + textin.setText("error!请输入小数点!"); //数字不能使用0开头 + } + else{ textin.setText(str1+e.getActionCommand()); - } + } } //小数点 @@ -135,42 +124,7 @@ public class panel1 extends JPanel implements ActionListener{ //下面设置加减乘除 - if(e.getSource()==bs[11]&&str2=="") { - str2=str1; - str1=""; - - alg=1; - - } - - if(e.getSource()==bs[19]&&alg==1) { - x=Double.parseDouble(str1); - y=Double.parseDouble(str2); - result=x+y; - str1=""+result; - textout.setText(str1); - alg=0; - - } //加法运算 - if(e.getSource()==bs[7]&&str2=="") { - str2=str1; - str1=""; - alg=2; - textin.setText("-"); - } - if(e.getSource()==bs[19]&&alg==2) { - x=Double.parseDouble(str1); - y=Double.parseDouble(str2); - result=x-y; - str1=""+result; - textout.setText(str2+"-"+str1); - alg=0; - - } //减法运算 - - - } - + } } -- Gitee From 666d9aebdb35054ba9dc458adca85f34a7b847b1 Mon Sep 17 00:00:00 2001 From: esther <1992630233@qq.com> Date: Sat, 28 May 2022 23:01:45 +0800 Subject: [PATCH 06/15] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=86=E5=88=86?= =?UTF-8?q?=E7=A6=BB=E6=95=B0=E5=AD=97=E5=92=8C=E6=8B=AC=E5=8F=B7=EF=BC=8C?= =?UTF-8?q?=E5=B9=B6=E9=80=90=E6=AD=A5=E8=BF=9B=E8=A1=8C=E8=BF=90=E7=AE=97?= =?UTF-8?q?=E7=9A=84=E5=8A=9F=E8=83=BD=EF=BC=8C=E4=BD=86=E5=87=BA=E7=8E=B0?= =?UTF-8?q?=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/Calculator.java | 86 ++++++++++++++++++++++++++++-- src/java2022spring/panel1.java | 51 +++++++++++++++--- 2 files changed, 125 insertions(+), 12 deletions(-) diff --git a/src/java2022spring/Calculator.java b/src/java2022spring/Calculator.java index 76a7202..47b4946 100644 --- a/src/java2022spring/Calculator.java +++ b/src/java2022spring/Calculator.java @@ -16,7 +16,6 @@ public class Calculator extends JFrame implements ActionListener { panel2 advance; //(extends panel)的替换面板 JMenuBar menubar; JMenu jichu,jinjie,more; - JButton huansuan,jfc,turn1,turn2; //子菜单的按钮 //初始化设计 Calculator(){ @@ -62,16 +61,95 @@ public class Calculator extends JFrame implements ActionListener { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } - + //设计多个版面之间的跳转 public void actionPerformed(ActionEvent e) { if(e.getActionCommand()=="跳转1") cardLayout.show(mainp, "p1"); else if(e.getActionCommand()=="跳转2") cardLayout.show(mainp, "p2"); } - //按键设计 - + //将数字和符号分离 + /*public String Separate(String str) { + if(str.startsWith("-")) { + StringBuffer buffer = new StringBuffer(str); + buffer.insert(0, "0"); + str = buffer.toString(); + } + str+="#"; + char strchar[]=str.toCharArray(); + LinkedList saveSign=new LinkedList(); + LinkedList saveNumber=new LinkedList(); + StringBuffer dealbuffer=new StringBuffer(); + for(char chars:strchar) { + if(chars=='0'||chars=='1'||chars=='2'||chars=='3'||chars=='4'||chars=='5'||chars=='6' + ||chars=='7'||chars=='8'||chars=='9') { + dealbuffer.append(chars); //只要没遇到运算符就添加一位组成运算符前的数字 + } + else if(chars=='#') { + saveNumber.add(dealbuffer.toString()); //添加最后一个数字 + } + else { + saveSign.add(String.valueOf(chars)); //把符号存入list + saveNumber.add(dealbuffer.toString()); //把数字存入list + dealbuffer.delete(0,dealbuffer.length()); //清空buffer为下个运算数字做准备 + } + + } + return numberResult(saveSign,saveNumber); + + + } //算术优先级设计 + public String numberResult(LinkedList saveSign,LinkedList saveNumber) { + while (saveSign.size() > 0) { + int multiply = saveSign.indexOf("×"); + int divide = saveSign.indexOf("÷"); + + // 先计算乘的情况 + if ((multiply != -1 && divide != -1 && multiply < divide) + || (saveSign.contains("×") && !saveSign.contains("÷"))) { + calculatePerform("×", saveSign,saveNumber); + } + // 先计算除的情况 + else if ((multiply != -1 && divide != -1 && divide < multiply) + || (saveSign.contains("÷") && !saveSign.contains("×"))) { + calculatePerform("÷", saveSign,saveNumber); + } + // 只有加减,从左往右计算 + else if (saveSign.size() > 0) { + calculatePerform(saveSign.get(0), saveSign, saveNumber); + } + } + return saveNumber.get(0); //第一个数据即计算结果 + } + + public String calculatePerform(String signIndex,LinkedList saveNumber,LinkedList saveSign) { + int signindex=saveSign.indexOf(signIndex); + double x=Double.parseDouble(saveNumber.get(signindex)); + double y=Double.parseDouble(saveNumber.get(signindex+1)); + String result=""; + switch(signIndex) { + case "+": + result=String.valueOf(x+y);break; + case "-": + result=String.valueOf(x-y);break; + case "×": + result=String.valueOf(x*y);break; + case "÷": + if(x==0) { + basic.textin.setText("被除数不能为0"); + break; + } + else + result=String.valueOf(x/y);break; + } + saveNumber.set(signindex, result);// 两个数算完后把结果给前一个数 + saveSign.remove(signindex);// 在saveSign集中每算完一个符号就删一个符号 + saveNumber.remove(signindex + 1);// 在saveNumber中两个数运算完后删除后面的数 + return numberResult(saveSign,saveNumber); + } + + */ } diff --git a/src/java2022spring/panel1.java b/src/java2022spring/panel1.java index 99499b1..1bb8106 100644 --- a/src/java2022spring/panel1.java +++ b/src/java2022spring/panel1.java @@ -2,6 +2,7 @@ package java2022spring; import javax.swing.*; import java.awt.*; import java.awt.event.*; +import java.util.Scanner; public class panel1 extends JPanel implements ActionListener{ @@ -23,11 +24,10 @@ public class panel1 extends JPanel implements ActionListener{ JButton fs[]=new JButton[function.length]; String str1="",str2=""; double x,y,result=1; - + + Calculator view=new Calculator(); //用来调用calculator中的方法 int isequal=0; //判断等号是否出现 int point=0; //判断小数点是否出现 - - //panel1的版面设计 panel1() { @@ -118,13 +118,48 @@ public class panel1 extends JPanel implements ActionListener{ //小数点 if(e.getActionCommand().equals(".")) { - + str1=textin.getText(); + char s[]=str1.toCharArray();//将字符串转为字符数组 + int place=str1.length(); + if(Character.isDigit(s[place-1])) { + textin.setText(str1+"."); + } } - //下面设置加减乘除 + if(e.getActionCommand().equals("+")) { + str1=textin.getText(); + str2=textout.getText(); + if(str1==""||str2=="") { + textin.setText("error!不能这样使用!"); + } + else { + textout.setText(str2+"+"); + textin.setText(""); + } + } + + - - - } + //按下等号计算结果 + if(e.getActionCommand().equals("=")) { + str1=textin.getText(); + str2=textout.getText(); + if(str1=="") { + textin.setText("error!请再输入一个数字"); + } + else { + textout.setText(str2+str1); + Scanner scanner=new Scanner(textout.getText()); + //str2=view.Separate(scanner.next()); + textout.setText(textout.getText()+str2); + } //记得把其他的值还原 + } + + }//actionperformed方法结束 + + public void setView(Calculator view) { + this.view=view; + + } } -- Gitee From c7f763f1d14a578030431ad6a44c977ebbdf4061 Mon Sep 17 00:00:00 2001 From: esther <1992630233@qq.com> Date: Sat, 28 May 2022 23:48:29 +0800 Subject: [PATCH 07/15] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E5=8A=A0?= =?UTF-8?q?=E6=B3=95=E8=BF=90=E7=AE=97=E7=9A=84=E4=BB=A3=E7=A0=81=EF=BC=8C?= =?UTF-8?q?=E6=96=B0=E5=BB=BA=E7=B1=BBperform=E4=BC=98=E5=8C=96=E4=BA=86?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E8=BF=90=E7=AE=97=E7=9A=84=E9=83=A8=E5=88=86?= =?UTF-8?q?=EF=BC=8C=E8=A7=A3=E5=86=B3=E4=BA=86StackOverflowError=E7=9A=84?= =?UTF-8?q?bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/panel1.java | 70 +++++++++++++------------- src/java2022spring/perform.java | 89 +++++++++++++++++++++++++++++++++ 2 files changed, 125 insertions(+), 34 deletions(-) create mode 100644 src/java2022spring/perform.java diff --git a/src/java2022spring/panel1.java b/src/java2022spring/panel1.java index 1bb8106..1082510 100644 --- a/src/java2022spring/panel1.java +++ b/src/java2022spring/panel1.java @@ -24,10 +24,11 @@ public class panel1 extends JPanel implements ActionListener{ JButton fs[]=new JButton[function.length]; String str1="",str2=""; double x,y,result=1; - - Calculator view=new Calculator(); //用来调用calculator中的方法 + perform performCalculate=new perform(); int isequal=0; //判断等号是否出现 int point=0; //判断小数点是否出现 + + //panel1的版面设计 panel1() { @@ -118,48 +119,49 @@ public class panel1 extends JPanel implements ActionListener{ //小数点 if(e.getActionCommand().equals(".")) { - str1=textin.getText(); - char s[]=str1.toCharArray();//将字符串转为字符数组 - int place=str1.length(); - if(Character.isDigit(s[place-1])) { - textin.setText(str1+"."); - } - } + str1=textin.getText(); + char s[]=str1.toCharArray();//将字符串转为字符数组 + int place=str1.length(); + if(Character.isDigit(s[place-1])) { + textin.setText(str1+"."); + } + else { + textin.setText("error!不能这样使用!"); + } + } + //下面设置加减乘除 - if(e.getActionCommand().equals("+")) { + //下面设置加减乘除 + if(e.getActionCommand().equals("+")) { + str1=textin.getText(); + str2=textout.getText(); + if(str1.equals("")) { + textin.setText("error!不能这样使用!"); //没有数字不可以进行运算 + } + else { + textout.setText(str2+str1+"+"); + textin.setText(""); + } + } + + if(e.getActionCommand().equals("=")) { str1=textin.getText(); str2=textout.getText(); - if(str1==""||str2=="") { - textin.setText("error!不能这样使用!"); - } - else { - textout.setText(str2+"+"); - textin.setText(""); - } - } - - - - //按下等号计算结果 - if(e.getActionCommand().equals("=")) { - str1=textin.getText(); - str2=textout.getText(); - if(str1=="") { + if(str1.equals("")) { textin.setText("error!请再输入一个数字"); } else { textout.setText(str2+str1); + textin.setText(""); Scanner scanner=new Scanner(textout.getText()); - //str2=view.Separate(scanner.next()); - textout.setText(textout.getText()+str2); + str2= performCalculate.Separate(scanner.next()); + textout.setText(textout.getText()+"="+str2); } //记得把其他的值还原 } - - }//actionperformed方法结束 + + + }//perform end + - public void setView(Calculator view) { - this.view=view; - - } } diff --git a/src/java2022spring/perform.java b/src/java2022spring/perform.java new file mode 100644 index 0000000..9595838 --- /dev/null +++ b/src/java2022spring/perform.java @@ -0,0 +1,89 @@ +package java2022spring; + +import java.util.LinkedList; + +public class perform { + public String Separate(String str) { + if(str.startsWith("-")) { + StringBuffer buffer = new StringBuffer(str); + buffer.insert(0, "0"); + str = buffer.toString(); + } + str+="#"; + char strchar[]=str.toCharArray(); + LinkedList saveSign=new LinkedList(); + LinkedList saveNumber=new LinkedList(); + StringBuffer dealbuffer=new StringBuffer(); + for(char chars:strchar) { + if(chars=='0'||chars=='1'||chars=='2'||chars=='3'||chars=='4'||chars=='5'||chars=='6' + ||chars=='7'||chars=='8'||chars=='9'||chars=='.') { + dealbuffer.append(chars); //只要没遇到运算符就添加一位组成运算符前的数字 + } + else if(chars=='#') { + saveNumber.add(dealbuffer.toString()); //添加最后一个数字 + } + else { + saveSign.add(String.valueOf(chars)); //把符号存入list + saveNumber.add(dealbuffer.toString()); //把数字存入list + dealbuffer.delete(0,dealbuffer.length()); //清空buffer为下个运算数字做准备 + } + + } + return numberResult(saveSign,saveNumber); + + +} +//算术优先级设计 +public String numberResult(LinkedList saveSign,LinkedList saveNumber) { + while (saveSign.size() > 0) { + int multiply = saveSign.indexOf("×"); + int divide = saveSign.indexOf("÷"); + + // 先计算乘的情况 + if ((multiply != -1 && divide != -1 && multiply < divide) + || (saveSign.contains("×") && !saveSign.contains("÷"))) { + calculatePerform("×", saveSign,saveNumber); + } + // 先计算除的情况 + else if ((multiply != -1 && divide != -1 && divide < multiply) + || (saveSign.contains("÷") && !saveSign.contains("×"))) { + calculatePerform("÷", saveSign,saveNumber); + } + // 只有加减,从左往右计算 + else if (saveSign.size() > 0) { + calculatePerform(saveSign.get(0), saveSign, saveNumber); + } + } + return saveNumber.get(0); //第一个数据即计算结果 + } + +public String calculatePerform(String signIndex,LinkedList saveSign,LinkedList saveNumber) { + int signindex=saveSign.indexOf(signIndex); + double x=Double.parseDouble(saveNumber.get(signindex)); + double y=Double.parseDouble(saveNumber.get(signindex+1)); + String result=""; + switch(signIndex) { + case "+": + result=String.valueOf(x+y);break; + case "-": + result=String.valueOf(x-y);break; + case "×": + result=String.valueOf(x*y);break; + case "÷": + // if(x==0) { + // basic.textin.setText("被除数不能为0"); + // break; + // } + // else + result=String.valueOf(x/y);break; + } + saveNumber.set(signindex, result);// 两个数算完后把结果给前一个数 + saveSign.remove(signindex);// 在saveSign集中每算完一个符号就删一个符号 + saveNumber.remove(signindex + 1);// 在saveNumber中两个数运算完后删除后面的数 + return numberResult(saveSign,saveNumber); +} + + + + +} -- Gitee From 3bf03988c0ffd57c1e50e3487609e9a04ed07bcd Mon Sep 17 00:00:00 2001 From: esther <1992630233@qq.com> Date: Sun, 29 May 2022 12:44:52 +0800 Subject: [PATCH 08/15] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E5=9B=9B?= =?UTF-8?q?=E5=88=99=E8=BF=90=E7=AE=97=E7=9A=84=E4=BB=A3=E7=A0=81=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E6=B7=BB=E4=BA=86=E4=B8=80=E4=BA=9B=E5=AE=B9=E9=94=99?= =?UTF-8?q?=EF=BC=8C=E5=AE=9E=E7=8E=B0=E4=BA=86=E7=AE=80=E5=8D=95=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E5=99=A8=E5=89=A9=E4=BD=99=E6=8C=89=E9=94=AE=E7=9A=84?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/Calculator.java | 82 ----------------- src/java2022spring/panel1.java | 137 ++++++++++++++++++++++++++--- 2 files changed, 125 insertions(+), 94 deletions(-) diff --git a/src/java2022spring/Calculator.java b/src/java2022spring/Calculator.java index 47b4946..d60a7cd 100644 --- a/src/java2022spring/Calculator.java +++ b/src/java2022spring/Calculator.java @@ -68,88 +68,6 @@ public class Calculator extends JFrame implements ActionListener { else if(e.getActionCommand()=="跳转2") cardLayout.show(mainp, "p2"); } - //将数字和符号分离 - /*public String Separate(String str) { - if(str.startsWith("-")) { - StringBuffer buffer = new StringBuffer(str); - buffer.insert(0, "0"); - str = buffer.toString(); - } - str+="#"; - char strchar[]=str.toCharArray(); - LinkedList saveSign=new LinkedList(); - LinkedList saveNumber=new LinkedList(); - StringBuffer dealbuffer=new StringBuffer(); - for(char chars:strchar) { - if(chars=='0'||chars=='1'||chars=='2'||chars=='3'||chars=='4'||chars=='5'||chars=='6' - ||chars=='7'||chars=='8'||chars=='9') { - dealbuffer.append(chars); //只要没遇到运算符就添加一位组成运算符前的数字 - } - else if(chars=='#') { - saveNumber.add(dealbuffer.toString()); //添加最后一个数字 - } - else { - saveSign.add(String.valueOf(chars)); //把符号存入list - saveNumber.add(dealbuffer.toString()); //把数字存入list - dealbuffer.delete(0,dealbuffer.length()); //清空buffer为下个运算数字做准备 - } - - } - return numberResult(saveSign,saveNumber); - - } - //算术优先级设计 - public String numberResult(LinkedList saveSign,LinkedList saveNumber) { - while (saveSign.size() > 0) { - int multiply = saveSign.indexOf("×"); - int divide = saveSign.indexOf("÷"); - - // 先计算乘的情况 - if ((multiply != -1 && divide != -1 && multiply < divide) - || (saveSign.contains("×") && !saveSign.contains("÷"))) { - calculatePerform("×", saveSign,saveNumber); - } - // 先计算除的情况 - else if ((multiply != -1 && divide != -1 && divide < multiply) - || (saveSign.contains("÷") && !saveSign.contains("×"))) { - calculatePerform("÷", saveSign,saveNumber); - } - // 只有加减,从左往右计算 - else if (saveSign.size() > 0) { - calculatePerform(saveSign.get(0), saveSign, saveNumber); - } - } - return saveNumber.get(0); //第一个数据即计算结果 - } - - public String calculatePerform(String signIndex,LinkedList saveNumber,LinkedList saveSign) { - int signindex=saveSign.indexOf(signIndex); - double x=Double.parseDouble(saveNumber.get(signindex)); - double y=Double.parseDouble(saveNumber.get(signindex+1)); - String result=""; - switch(signIndex) { - case "+": - result=String.valueOf(x+y);break; - case "-": - result=String.valueOf(x-y);break; - case "×": - result=String.valueOf(x*y);break; - case "÷": - if(x==0) { - basic.textin.setText("被除数不能为0"); - break; - } - else - result=String.valueOf(x/y);break; - } - saveNumber.set(signindex, result);// 两个数算完后把结果给前一个数 - saveSign.remove(signindex);// 在saveSign集中每算完一个符号就删一个符号 - saveNumber.remove(signindex + 1);// 在saveNumber中两个数运算完后删除后面的数 - return numberResult(saveSign,saveNumber); - } - - - */ } diff --git a/src/java2022spring/panel1.java b/src/java2022spring/panel1.java index 1082510..d6f545a 100644 --- a/src/java2022spring/panel1.java +++ b/src/java2022spring/panel1.java @@ -16,17 +16,18 @@ public class panel1 extends JPanel implements ActionListener{ "4","5","6","+", - "1","2","3","sqrt", + "1","2","3","√", "%","0",".","="}; String [] function= {"MC","M+","M-","MR"}; JButton bs[] = new JButton[button.length]; JButton fs[]=new JButton[function.length]; - String str1="",str2=""; + String str1="",str2="",str3=""; double x,y,result=1; + int alg=0; //运算方法标识符 perform performCalculate=new perform(); - int isequal=0; //判断等号是否出现 - int point=0; //判断小数点是否出现 + + //panel1的版面设计 @@ -99,20 +100,56 @@ public class panel1 extends JPanel implements ActionListener{ str2 = ""; textin.setText(str1); textout.setText(str2); + alg=0; //恢复默认值 } + + //按下CE退一格 + if(e.getActionCommand().equals("CE")) { + str1=textin.getText(); + str2=textout.getText(); + if(!str1.equals("")) { + StringBuffer buffer=new StringBuffer(); + buffer.append(str1); + buffer.delete(buffer.length()-1,buffer.length()); + str1=buffer.toString(); + textin.setText(str1); + } + else if(str2.equals("")&&str1.equals("")) { + textout.setText("无效操作!"); + } + else { + StringBuffer buffer=new StringBuffer(); + buffer.append(str2); + buffer.delete(buffer.length()-1,buffer.length()); + str2=buffer.toString(); + textout.setText(str2); + } + + } + //MC,MR,M+,M-功能尚未实现 + if(e.getActionCommand().equals("MC")||e.getActionCommand().equals("MR") + ||e.getActionCommand().equals("M+")||e.getActionCommand().equals("M-")) { + textin.setText("本功能期待你来实现~"); + } + + + + + + //数字1-9 if(e.getSource().equals(bs[4])||e.getSource().equals(bs[5])||e.getSource().equals(bs[6])|| e.getSource().equals(bs[8])||e.getSource().equals(bs[9])||e.getSource().equals(bs[10])|| e.getSource().equals(bs[12])||e.getSource().equals(bs[13])||e.getSource().equals(bs[14])|| e.getSource().equals(bs[17])) { str1=textin.getText(); - if(str1.equals("")) { + if(str1.equals("")) { textin.setText(e.getActionCommand()); //若为空则输入按下数字 } else if(str1.equals("0")) { textin.setText("error!请输入小数点!"); //数字不能使用0开头 - } - else{ + } + else { textin.setText(str1+e.getActionCommand()); } } @@ -130,13 +167,46 @@ public class panel1 extends JPanel implements ActionListener{ } } + //%取余 + if(e.getActionCommand().equals("%")) { + str1=textin.getText(); + if(str1.equals("")) { + textin.setText("error!不能这样使用!"); + } + else { + textout.setText(str1+"%"); + textin.setText(""); + str3=str1; + alg=1; + } + } + if(e.getActionCommand().equals("=")&&alg==1) { + str1=textin.getText(); + double x=Double.parseDouble(str3); //记得再修改下 + double y=Double.parseDouble(str1); + double result=x%y; + textin.setText(""); + textout.setText(textout.getText()+str1+"="+result); + } + + //√开平方 + if(e.getActionCommand().equals("√")) { + str1=textin.getText(); + double x=Double.parseDouble(str1); + result=Math.sqrt(x); + textin.setText(""+result); + } + + + + + //下面设置加减乘除 - //下面设置加减乘除 if(e.getActionCommand().equals("+")) { str1=textin.getText(); str2=textout.getText(); - if(str1.equals("")) { + if(str1.equals("")&&str2.equals("")) { textin.setText("error!不能这样使用!"); //没有数字不可以进行运算 } else { @@ -144,8 +214,49 @@ public class panel1 extends JPanel implements ActionListener{ textin.setText(""); } } + if(e.getActionCommand().equals("-")) { + str1=textin.getText(); + str2=textout.getText(); + if(str1.equals("")) { + textin.setText("error!不能这样使用!"); //没有数字不可以进行运算 + } + else { + textout.setText(str2+str1+"-"); + textin.setText(""); + } + } + if(e.getActionCommand().equals("×")) { + str1=textin.getText(); + str2=textout.getText(); + if(str1.equals("")) { + textin.setText("error!不能这样使用!"); //没有数字不可以进行运算 + } + else { + textout.setText(str2+str1+"×"); + textin.setText(""); + } + } + if(e.getActionCommand().equals("÷")) { + str1=textin.getText(); + str2=textout.getText(); + if(str1.equals("")) { + textin.setText("error!不能这样使用!"); //没有数字不可以进行运算 + } + else { + textout.setText(str2+str1+"×"); + textin.setText(""); + } + } + //到此四则运算设置完毕 + + + + + + - if(e.getActionCommand().equals("=")) { + //按下等号后 + if(e.getActionCommand().equals("=")&&alg==0) { str1=textin.getText(); str2=textout.getText(); if(str1.equals("")) { @@ -157,11 +268,13 @@ public class panel1 extends JPanel implements ActionListener{ Scanner scanner=new Scanner(textout.getText()); str2= performCalculate.Separate(scanner.next()); textout.setText(textout.getText()+"="+str2); - } //记得把其他的值还原 + str1=""; + str2=""; //把其他的值还原 + } } - }//perform end + }//actionPerformed end } -- Gitee From 4c255f1e7175b5375ca6d9729a081b2cd74d385b Mon Sep 17 00:00:00 2001 From: esther <1992630233@qq.com> Date: Mon, 30 May 2022 17:45:13 +0800 Subject: [PATCH 09/15] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BA=86=E4=B8=80?= =?UTF-8?q?=E4=BA=9B=E6=8C=89=E9=94=AE=E5=8A=9F=E8=83=BD=EF=BC=8C=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E5=AE=8C=E6=88=90=E4=BA=86=E7=A7=91=E5=AD=A6=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E5=99=A8=E7=9A=84=E5=8A=9F=E8=83=BD=EF=BC=8C=E5=B9=B6?= =?UTF-8?q?=E5=AF=B9=E4=B8=80=E4=BA=9B=E7=BB=86=E8=8A=82=E8=BF=9B=E8=A1=8C?= =?UTF-8?q?=E4=BA=86=E4=BF=AE=E6=94=B9=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/panel1.java | 16 +- src/java2022spring/panel2.java | 381 +++++++++++++++++++++++++++++++-- 2 files changed, 372 insertions(+), 25 deletions(-) diff --git a/src/java2022spring/panel1.java b/src/java2022spring/panel1.java index d6f545a..de083a0 100644 --- a/src/java2022spring/panel1.java +++ b/src/java2022spring/panel1.java @@ -46,7 +46,7 @@ public class panel1 extends JPanel implements ActionListener{ textin.setPreferredSize(new Dimension(400, 60)); textout.setPreferredSize(new Dimension(400, 65)); textout.setEnabled(false); - // textout.setBackground(Color.lightGray); + // textout.setBackground(Color.lightGray); textin.setHorizontalAlignment(SwingConstants.RIGHT); textout.setHorizontalAlignment(SwingConstants.RIGHT); @@ -61,6 +61,7 @@ public class panel1 extends JPanel implements ActionListener{ bs[i].setFont(new Font("黑体", 1, 17)); //Center 4×5 sp2.add(bs[i]); } + //设置布局 @@ -137,7 +138,7 @@ public class panel1 extends JPanel implements ActionListener{ - //数字1-9 + //数字0-9 if(e.getSource().equals(bs[4])||e.getSource().equals(bs[5])||e.getSource().equals(bs[6])|| e.getSource().equals(bs[8])||e.getSource().equals(bs[9])||e.getSource().equals(bs[10])|| e.getSource().equals(bs[12])||e.getSource().equals(bs[13])||e.getSource().equals(bs[14])|| @@ -192,10 +193,16 @@ public class panel1 extends JPanel implements ActionListener{ //√开平方 if(e.getActionCommand().equals("√")) { + str1=textin.getText(); + if(str1.equals("")) { + textin.setText("error!请输入数字"); + } + else { double x=Double.parseDouble(str1); result=Math.sqrt(x); textin.setText(""+result); + } } @@ -217,7 +224,7 @@ public class panel1 extends JPanel implements ActionListener{ if(e.getActionCommand().equals("-")) { str1=textin.getText(); str2=textout.getText(); - if(str1.equals("")) { + if(str1.equals("")&&str2.equals("")) { textin.setText("error!不能这样使用!"); //没有数字不可以进行运算 } else { @@ -243,7 +250,7 @@ public class panel1 extends JPanel implements ActionListener{ textin.setText("error!不能这样使用!"); //没有数字不可以进行运算 } else { - textout.setText(str2+str1+"×"); + textout.setText(str2+str1+"÷"); textin.setText(""); } } @@ -259,6 +266,7 @@ public class panel1 extends JPanel implements ActionListener{ if(e.getActionCommand().equals("=")&&alg==0) { str1=textin.getText(); str2=textout.getText(); + if(str1.equals("")) { textin.setText("error!请再输入一个数字"); } diff --git a/src/java2022spring/panel2.java b/src/java2022spring/panel2.java index 29705bc..8229f39 100644 --- a/src/java2022spring/panel2.java +++ b/src/java2022spring/panel2.java @@ -14,6 +14,7 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; +import java.util.Scanner; import javax.swing.JButton; import javax.swing.JTextField; @@ -25,21 +26,24 @@ public class panel2 extends JPanel implements ActionListener{ JTextField textin,textout; String [] button={ - "(", ")", "1/x", "x2", "x3", - "x!","√x"," y√x", "e" ,"ln", + "(", ")", "1/x", "x^2", "x^3", + "x!","√x","y√x", "e" ,"ln", "log", "MC", "M+" ,"M-" ,"MR", - "sin" ,"back" ,"c" ,"ce" ,"+", + "sin" ,"e^x" ,"C" ,"CE" ,"+", "cos" ,"7" ,"8" ,"9" ,"-", - "tan", "4", "5" ,"6 " , "×", - "Inv" ,"1" ,"2" ,"3" ,"÷", + "tan", "4", "5" ,"6" , "×", + "π" ,"1" ,"2" ,"3" ,"÷", "Rad" ,"%" , "0" , "." ,"=" - }; - String in="",out=""; + }; + String str1="",str2="",str3=""; + double x,y,result=1; + int alg=0; //运算方法标识符 + perform performCalculate=new perform(); JButton bs[] = new JButton[button.length]; //8row,5col - //panel1的版面设计 + //panel2的版面设计 panel2() { @@ -50,7 +54,7 @@ public class panel2 extends JPanel implements ActionListener{ textin.setFont(new java.awt.Font("黑体", Font.PLAIN, 40)); textout.setFont(new java.awt.Font("黑体", Font.PLAIN, 40)); setBackground(Color.cyan); - // textout.setBackground(Color.lightGray); + // textout.setBackground(Color.lightGray); textin.setPreferredSize(new Dimension(400, 60)); textout.setPreferredSize(new Dimension(400, 65)); textout.setEnabled(false); @@ -70,8 +74,7 @@ public class panel2 extends JPanel implements ActionListener{ //设置布局 setLayout(new BorderLayout()); - total.setLayout(new BorderLayout()); - + total.setLayout(new BorderLayout()); keyboard.setLayout(new GridLayout(8,5)); total.add(textin,BorderLayout.NORTH); total.add(textout,BorderLayout.CENTER); @@ -79,21 +82,357 @@ public class panel2 extends JPanel implements ActionListener{ add(keyboard,BorderLayout.CENTER); - - + - } //给按钮注册监听器 - - + for(int i=0;i0;i--) { + + y=y*i; + } + + textin.setText(""+y); + } + } + //e + if(e.getActionCommand().equals("e")) { + textin.setText("2.718281828459"); + } + //e^x + if(e.getActionCommand().equals("e^x")) { + str1=textin.getText(); + if(str1.equals("")) { + textin.setText("error!请输入数字"); + } + else { + int x=Integer.parseInt(str1); + result = Math.pow(2.718281828459, x); + textin.setText(""+result); + } + } + //π + if(e.getActionCommand().equals("π")) { + textin.setText("3.1415926"); + } + //sinx + if(e.getActionCommand().equals("sin")) { + str1=textin.getText(); + if(str1.equals("")) { + textin.setText("error!请输入数字"); + } + else { + textin.setText(""); + result = Math.sin(x); + textout.setText(""+result); + } + } + //cosx + if(e.getActionCommand().equals("cos")) { + str1=textin.getText(); + if(str1.equals("")) { + textin.setText("error!请输入数字"); + } + else { + textin.setText(""); + result = Math.cos(x); + textout.setText(""+result); + } + } + //tanx + if(e.getActionCommand().equals("tan")) { + str1=textin.getText(); + if(str1.equals("")) { + textin.setText("error!请输入数字"); + } + else { + textin.setText(""); + result = Math.tan(x); + textout.setText(""+result); + } + } + + + + + + + //下面设置加减乘除 + if(e.getActionCommand().equals("+")) { + str1=textin.getText(); + str2=textout.getText(); + if(str1.equals("")&&str2.equals("")) { + textin.setText("error!不能这样使用!"); //没有数字不可以进行运算 + } + else { + textout.setText(str2+str1+"+"); + textin.setText(""); + } + } + if(e.getActionCommand().equals("-")) { + str1=textin.getText(); + str2=textout.getText(); + if(str1.equals("")&&str2.equals("")) { + textin.setText("error!不能这样使用!"); //没有数字不可以进行运算 + } + else { + textout.setText(str2+str1+"-"); + textin.setText(""); + } + } + if(e.getActionCommand().equals("×")) { + str1=textin.getText(); + str2=textout.getText(); + if(str1.equals("")) { + textin.setText("error!不能这样使用!"); //没有数字不可以进行运算 + } + else { + textout.setText(str2+str1+"×"); + textin.setText(""); + } + } + if(e.getActionCommand().equals("÷")) { + str1=textin.getText(); + str2=textout.getText(); + if(str1.equals("")) { + textin.setText("error!不能这样使用!"); //没有数字不可以进行运算 + } + else { + textout.setText(str2+str1+"÷"); + textin.setText(""); + } + } + //到此四则运算设置完毕 + + + + + + + + //按下等号后 + if(e.getActionCommand().equals("=")&&alg==0) { + str1=textin.getText(); + str2=textout.getText(); + + if(str1.equals("")) { + textin.setText("error!请再输入一个数字"); + } + else { + textout.setText(str2+str1); + textin.setText(""); + Scanner scanner=new Scanner(textout.getText()); + str2= performCalculate.Separate(scanner.next()); + textout.setText(textout.getText()+"="+str2); + str1=""; + str2=""; //把其他的值还原 + } + } + + + }//actionPerformed end -} + } + -- Gitee From 728c296484029cb7c6b6d781e1c612d5c83c3160 Mon Sep 17 00:00:00 2001 From: esther <1992630233@qq.com> Date: Tue, 31 May 2022 23:42:59 +0800 Subject: [PATCH 10/15] =?UTF-8?q?=E5=AE=8C=E6=88=90=E4=BA=86=E6=8D=A2?= =?UTF-8?q?=E7=AE=97=E5=92=8C=E8=A7=A3=E6=96=B9=E7=A8=8B=E7=9A=84=E7=89=88?= =?UTF-8?q?=E9=9D=A2=E8=AE=BE=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/Calculator.java | 19 +++++++-- src/java2022spring/panel3.java | 68 ++++++++++++++++++++++++++++++ src/java2022spring/panel4.java | 65 ++++++++++++++++++++++++++++ 3 files changed, 149 insertions(+), 3 deletions(-) create mode 100644 src/java2022spring/panel3.java create mode 100644 src/java2022spring/panel4.java diff --git a/src/java2022spring/Calculator.java b/src/java2022spring/Calculator.java index d60a7cd..ed4f8f4 100644 --- a/src/java2022spring/Calculator.java +++ b/src/java2022spring/Calculator.java @@ -13,7 +13,9 @@ public class Calculator extends JFrame implements ActionListener { JPanel mainp; //主面板 JPanel p0; //子菜单触发事件的面板 panel1 basic; - panel2 advance; //(extends panel)的替换面板 + panel2 advance; //(extends panel)的替换面板1 + panel3 trans; + panel4 jie; JMenuBar menubar; JMenu jichu,jinjie,more; JButton huansuan,jfc,turn1,turn2; //子菜单的按钮 @@ -29,6 +31,9 @@ public class Calculator extends JFrame implements ActionListener { turn2=new JButton("跳转2"); turn1.addActionListener(this); turn2.addActionListener(this); + huansuan.addActionListener(this); + jfc.addActionListener(this); + p0=new JPanel(); p0.setLayout(new GridLayout(2,1)); p0.add(jfc); @@ -49,13 +54,17 @@ public class Calculator extends JFrame implements ActionListener { mainp.add("p1",basic); advance=new panel2(); //设置card2 mainp.add("p2",advance); + trans=new panel3(); + mainp.add("p3",trans); + jie=new panel4(); + mainp.add("p4",jie); add(mainp); setTitle("Your supercalculator"); - setBounds(100, 100, 450, 600); + setBounds(170, 50, 450, 600); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); @@ -67,7 +76,11 @@ public class Calculator extends JFrame implements ActionListener { cardLayout.show(mainp, "p1"); else if(e.getActionCommand()=="跳转2") cardLayout.show(mainp, "p2"); - } + else if(e.getActionCommand()=="换算") + cardLayout.show(mainp, "p3"); + else if(e.getActionCommand()=="解方程") + cardLayout.show(mainp,"p4"); + } } diff --git a/src/java2022spring/panel3.java b/src/java2022spring/panel3.java new file mode 100644 index 0000000..cce9a55 --- /dev/null +++ b/src/java2022spring/panel3.java @@ -0,0 +1,68 @@ +package java2022spring; + +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; + +public class panel3 extends JPanel implements ActionListener{ + JTextArea one,two; + JComboBox box1,box2,box3; + JTextField number1,number2; + JLabel a,b,m,n; + //版面设计 + panel3(){ + + one=new JTextArea(10,30); + two=new JTextArea(10,30); + a=new JLabel("=>?人民币"); + b=new JLabel("="); + m=new JLabel("汇率换算 请输入数字:"); + n=new JLabel("单位换算 请输入数字:"); + box3=new JComboBox(); + box1=new JComboBox(); + box2=new JComboBox(); + number1=new JTextField(4); + number2=new JTextField(4); + number1.setHorizontalAlignment(SwingConstants.RIGHT); + number2.setHorizontalAlignment(SwingConstants.RIGHT); + //设置布局 + + setLayout(null); + add(one); + add(two); + add(number1); + add(number2); + add(box1); + add(box2); + add(box3); + add(a); + add(b); + add(m); + add(n); + m.setBounds(30,20, 200, 30); + number1.setBounds(40,50,80,30); + box1.setBounds(130,50,100,30); + one.setBounds(40,90,350,80); //area1 + a.setBounds(250,50,80,30); + + n.setBounds(30,270, 200, 30); + number2.setBounds(40,300,80,30); + box2.setBounds(130,300,100,30); + two.setBounds(40,340,350,80); + b.setBounds(250,300,50,30); + box3.setBounds(270,300,100,30); + } + @Override + public void actionPerformed(ActionEvent e) { + // TODO 自动生成的方法存根 + + } + + + + + + + + +} diff --git a/src/java2022spring/panel4.java b/src/java2022spring/panel4.java new file mode 100644 index 0000000..dff7312 --- /dev/null +++ b/src/java2022spring/panel4.java @@ -0,0 +1,65 @@ +package java2022spring; + +import java.awt.event.*; +import javax.swing.*; + +public class panel4 extends JPanel implements ActionListener,ItemListener{ + + JTextField in1,in2,in3; + JLabel a,b,m; + JTextArea out; + JButton c,ok; + panel4(){ + in1=new JTextField(4); + in2=new JTextField(4); + in3=new JTextField(4); + a=new JLabel("x^2 +"); + b=new JLabel("x +"); + c=new JButton("="); + ok=new JButton("清空"); + m=new JLabel("请输入系数:"); + out=new JTextArea(10,30); + + //设置布局 + setLayout(null); + add(in1); + add(in2); + add(in3); + add(a); + add(b); + add(c); + add(m); + add(out); + add(ok); + + m.setBounds(30,20, 200, 30); + in1.setBounds(40,50,80,30); + a.setBounds(130,50,50,30); + in2.setBounds(170,50,80,30); + b.setBounds(250,50,50,30); + in3.setBounds(270,50,80,30); + c.setBounds(360,50,45,30); + out.setBounds(40,90,350,80); //area1 + ok.setBounds(340,200,80,40); + + } + + + + + + + + + public void itemStateChanged(ItemEvent e) { + // TODO 自动生成的方法存根 + + } + + + public void actionPerformed(ActionEvent e) { + // TODO 自动生成的方法存根 + + } + +} -- Gitee From fae8c139c38736b5cc6e86708d30800d3bf4b77e Mon Sep 17 00:00:00 2001 From: esther <1992630233@qq.com> Date: Thu, 2 Jun 2022 13:28:50 +0800 Subject: [PATCH 11/15] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E4=B8=89?= =?UTF-8?q?=E8=A7=92=E5=87=BD=E6=95=B0=E7=9A=84=E9=94=99=E8=AF=AF=EF=BC=8C?= =?UTF-8?q?=E5=AE=8C=E6=88=90=E4=BA=86=E6=8D=A2=E7=AE=97=E7=9A=84=E9=83=A8?= =?UTF-8?q?=E5=88=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/panel2.java | 3 +- src/java2022spring/panel3.java | 93 ++++++++++++++++++++++++++++++++-- src/java2022spring/panel4.java | 14 ++--- 3 files changed, 98 insertions(+), 12 deletions(-) diff --git a/src/java2022spring/panel2.java b/src/java2022spring/panel2.java index 8229f39..d05901d 100644 --- a/src/java2022spring/panel2.java +++ b/src/java2022spring/panel2.java @@ -331,11 +331,12 @@ public class panel2 extends JPanel implements ActionListener{ //cosx if(e.getActionCommand().equals("cos")) { str1=textin.getText(); + double x=Double.parseDouble(str1); if(str1.equals("")) { textin.setText("error!请输入数字"); } else { - textin.setText(""); + textin.setText("cos"+x+"="); result = Math.cos(x); textout.setText(""+result); } diff --git a/src/java2022spring/panel3.java b/src/java2022spring/panel3.java index cce9a55..01d017d 100644 --- a/src/java2022spring/panel3.java +++ b/src/java2022spring/panel3.java @@ -4,16 +4,23 @@ import java.awt.*; import java.awt.event.*; import javax.swing.*; -public class panel3 extends JPanel implements ActionListener{ +public class panel3 extends JPanel implements ActionListener,ItemListener{ JTextArea one,two; - JComboBox box1,box2,box3; + JComboBox box1,box2,box3; JTextField number1,number2; JLabel a,b,m,n; + JButton c1,c2,s1,s2; + String str1="",str2="",str3="",str=""; + //版面设计 panel3(){ one=new JTextArea(10,30); two=new JTextArea(10,30); + c1=new JButton("清空"); + c2=new JButton("清空"); + s1=new JButton("计算"); + s2=new JButton("计算"); a=new JLabel("=>?人民币"); b=new JLabel("="); m=new JLabel("汇率换算 请输入数字:"); @@ -21,6 +28,30 @@ public class panel3 extends JPanel implements ActionListener{ box3=new JComboBox(); box1=new JComboBox(); box2=new JComboBox(); + + box1.addItem("请选择"); + box1.addItem("美元"); + box1.addItem("欧元"); + box1.addItem("英镑"); + box1.addItem("泰铢"); + box1.addItem("日元"); + + box2.addItem("请选择"); + box2.addItem("km"); + box2.addItem("m"); + box2.addItem("dm"); //换成厘米 + box2.addItem("kg"); //g + box2.addItem("h"); + box2.addItem("min"); //g + box2.addItem("m/s"); //km/h + + box3.addItem("请选择"); + box3.addItem("cm"); + box3.addItem("g"); + box3.addItem("s"); + box3.addItem("km/h"); + + number1=new JTextField(4); number2=new JTextField(4); number1.setHorizontalAlignment(SwingConstants.RIGHT); @@ -39,11 +70,20 @@ public class panel3 extends JPanel implements ActionListener{ add(b); add(m); add(n); + add(c1); + add(c2); + add(s1); + add(s2); + m.setBounds(30,20, 200, 30); number1.setBounds(40,50,80,30); box1.setBounds(130,50,100,30); one.setBounds(40,90,350,80); //area1 a.setBounds(250,50,80,30); + s1.setBounds(220,200,80,35); + c1.setBounds(320,200,80,35); + s2.setBounds(220,450,80,35); + c2.setBounds(320,450,80,35); n.setBounds(30,270, 200, 30); number2.setBounds(40,300,80,30); @@ -51,15 +91,58 @@ public class panel3 extends JPanel implements ActionListener{ two.setBounds(40,340,350,80); b.setBounds(250,300,50,30); box3.setBounds(270,300,100,30); + + //设置监听器 + box1.addItemListener(this); + box2.addItemListener(this); + box3.addItemListener(this); + c1.addActionListener(this); + c2.addActionListener(this); + s1.addActionListener(this); + s2.addActionListener(this); + + + } - @Override + //触发事件功能 public void actionPerformed(ActionEvent e) { - // TODO 自动生成的方法存根 + //汇率换算的计算功能 + if(e.getSource().equals(s1)) { + str=number1.getText(); + double x=Double.parseDouble(str); + if(str1.equals("美元")) { + double result=6.6999*x; + one.setText(x+"美元="+result+"人民币"); + } + + + + + + + + + } + + //汇率换算的清空功能 + if(e.getSource().equals(c1)) { + number1.setText(""); + one.setText(""); + } + // } - + public void itemStateChanged(ItemEvent e) { + str1=box1.getSelectedItem().toString(); + str2=box2.getSelectedItem().toString(); + str3=box3.getSelectedItem().toString(); + + } + + + diff --git a/src/java2022spring/panel4.java b/src/java2022spring/panel4.java index dff7312..4ffb425 100644 --- a/src/java2022spring/panel4.java +++ b/src/java2022spring/panel4.java @@ -6,17 +6,18 @@ import javax.swing.*; public class panel4 extends JPanel implements ActionListener,ItemListener{ JTextField in1,in2,in3; - JLabel a,b,m; + JLabel a,b,c,m; JTextArea out; - JButton c,ok; + JButton ok,clear; panel4(){ in1=new JTextField(4); in2=new JTextField(4); in3=new JTextField(4); a=new JLabel("x^2 +"); b=new JLabel("x +"); - c=new JButton("="); - ok=new JButton("清空"); + c=new JLabel("= 0"); + ok=new JButton("计算"); + clear=new JButton("清空"); m=new JLabel("请输入系数:"); out=new JTextArea(10,30); @@ -31,6 +32,7 @@ public class panel4 extends JPanel implements ActionListener,ItemListener{ add(m); add(out); add(ok); + add(clear); m.setBounds(30,20, 200, 30); in1.setBounds(40,50,80,30); @@ -40,8 +42,8 @@ public class panel4 extends JPanel implements ActionListener,ItemListener{ in3.setBounds(270,50,80,30); c.setBounds(360,50,45,30); out.setBounds(40,90,350,80); //area1 - ok.setBounds(340,200,80,40); - + clear.setBounds(340,200,80,35); + ok.setBounds(250,200,80,35); } -- Gitee From 69bb753c6591e10c791c1fa63d68daae61436eb8 Mon Sep 17 00:00:00 2001 From: esther <1992630233@qq.com> Date: Fri, 3 Jun 2022 10:36:53 +0800 Subject: [PATCH 12/15] =?UTF-8?q?=E5=AE=8C=E6=88=90=E4=BA=86=E6=8D=A2?= =?UTF-8?q?=E7=AE=97=E5=92=8C=E8=A7=A3=E6=96=B9=E7=A8=8B=E9=9D=A2=E6=9D=BF?= =?UTF-8?q?=E7=9A=84=E5=8A=9F=E8=83=BD=E8=AE=BE=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/panel2.java | 8 ++-- src/java2022spring/panel3.java | 88 ++++++++++++++++++++++++++++------ src/java2022spring/panel4.java | 65 +++++++++++++++++++------ 3 files changed, 129 insertions(+), 32 deletions(-) diff --git a/src/java2022spring/panel2.java b/src/java2022spring/panel2.java index d05901d..e524bc9 100644 --- a/src/java2022spring/panel2.java +++ b/src/java2022spring/panel2.java @@ -27,7 +27,7 @@ public class panel2 extends JPanel implements ActionListener{ JTextField textin,textout; String [] button={ "(", ")", "1/x", "x^2", "x^3", - "x!","√x","y√x", "e" ,"ln", + "x!","√","y√x", "e" ,"ln", "log", "MC", "M+" ,"M-" ,"MR", "sin" ,"e^x" ,"C" ,"CE" ,"+", "cos" ,"7" ,"8" ,"9" ,"-", @@ -319,11 +319,12 @@ public class panel2 extends JPanel implements ActionListener{ //sinx if(e.getActionCommand().equals("sin")) { str1=textin.getText(); + double x=Double.parseDouble(str1); if(str1.equals("")) { textin.setText("error!请输入数字"); } else { - textin.setText(""); + textin.setText("sin"+x+"="); result = Math.sin(x); textout.setText(""+result); } @@ -344,11 +345,12 @@ public class panel2 extends JPanel implements ActionListener{ //tanx if(e.getActionCommand().equals("tan")) { str1=textin.getText(); + double x=Double.parseDouble(str1); if(str1.equals("")) { textin.setText("error!请输入数字"); } else { - textin.setText(""); + textin.setText("tan"+x+"="); result = Math.tan(x); textout.setText(""+result); } diff --git a/src/java2022spring/panel3.java b/src/java2022spring/panel3.java index 01d017d..63b28b9 100644 --- a/src/java2022spring/panel3.java +++ b/src/java2022spring/panel3.java @@ -48,6 +48,7 @@ public class panel3 extends JPanel implements ActionListener,ItemListener{ box3.addItem("请选择"); box3.addItem("cm"); box3.addItem("g"); + box3.addItem("min"); box3.addItem("s"); box3.addItem("km/h"); @@ -109,18 +110,34 @@ public class panel3 extends JPanel implements ActionListener,ItemListener{ //汇率换算的计算功能 if(e.getSource().equals(s1)) { str=number1.getText(); - double x=Double.parseDouble(str); + + if(str.equals("")) { + one.setText("请输入数字"); + } + else { + double x=Double.parseDouble(str); if(str1.equals("美元")) { double result=6.6999*x; one.setText(x+"美元="+result+"人民币"); } + if(str1.equals("欧元")) { + double result=7.1332*x; + one.setText(x+"欧元="+result+"人民币"); + } + if(str1.equals("英镑")) { + double result=8.3576*x; + one.setText(x+"英镑="+result+"人民币"); + } + if(str1.equals("泰铢")) { + double result=0.1946*x; + one.setText(x+"泰铢="+result+"人民币"); + } + if(str1.equals("日元")) { + double result=0.0513*x; + one.setText(x+"日元="+result+"人民币"); + } - - - - - - + } } @@ -129,8 +146,57 @@ public class panel3 extends JPanel implements ActionListener,ItemListener{ number1.setText(""); one.setText(""); } - // + //单位换算的计算 + if(e.getSource().equals(s2)) { + str=number2.getText(); + + if(str.equals("")) { + two.setText("请输入数字"); + } + else { + double x=Double.parseDouble(str); + if(str2.equals("km")&&str3.equals("cm")){ + double result=x*100000; + two.setText(x+"km="+result+"cm"); + } + else if(str2.equals("m")&&str3.equals("cm")){ + double result=x*1000; + two.setText(x+"dm="+result+"cm"); + } + else if(str2.equals("dm")&&str3.equals("cm")){ + double result=x*10; + two.setText(x+"dm="+result+"cm"); + } + else if(str2.equals("kg")&&str3.equals("g")){ + double result=x*1000; + two.setText(x+"kg="+result+"g"); + } + else if(str2.equals("h")&&str3.equals("min")){ + double result=x*60; + two.setText(x+"h="+result+"min"); + } + else if(str2.equals("h")&&str3.equals("s")){ + double result=x*3600; + two.setText(x+"h="+result+"s"); + } + else if(str2.equals("min")&&str3.equals("s")){ + double result=x*60; + two.setText(x+"min="+result+"s"); + } + else if(str2.equals("m/s")&&str3.equals("km/h")){ + double result=x*3.6; + two.setText(x+"m/s="+result+"km/h"); + } + else + two.setText("error!数据类型不匹配!"); + } + } + //单位换算的清空功能 + if(e.getSource().equals(c2)) { + number2.setText(""); + two.setText(""); + } } @@ -141,11 +207,5 @@ public class panel3 extends JPanel implements ActionListener,ItemListener{ } - - - - - - } diff --git a/src/java2022spring/panel4.java b/src/java2022spring/panel4.java index 4ffb425..eb6fe54 100644 --- a/src/java2022spring/panel4.java +++ b/src/java2022spring/panel4.java @@ -3,16 +3,21 @@ package java2022spring; import java.awt.event.*; import javax.swing.*; -public class panel4 extends JPanel implements ActionListener,ItemListener{ +public class panel4 extends JPanel implements ActionListener{ JTextField in1,in2,in3; JLabel a,b,c,m; JTextArea out; JButton ok,clear; + String str1="",str2="",str3=""; panel4(){ in1=new JTextField(4); in2=new JTextField(4); in3=new JTextField(4); + in1.setHorizontalAlignment(SwingConstants.RIGHT); + in2.setHorizontalAlignment(SwingConstants.RIGHT); + in3.setHorizontalAlignment(SwingConstants.RIGHT); + a=new JLabel("x^2 +"); b=new JLabel("x +"); c=new JLabel("= 0"); @@ -20,7 +25,9 @@ public class panel4 extends JPanel implements ActionListener,ItemListener{ clear=new JButton("清空"); m=new JLabel("请输入系数:"); out=new JTextArea(10,30); - + //设置监听器 + ok.addActionListener(this); + clear.addActionListener(this); //设置布局 setLayout(null); add(in1); @@ -47,20 +54,48 @@ public class panel4 extends JPanel implements ActionListener,ItemListener{ } - - - - - - - public void itemStateChanged(ItemEvent e) { - // TODO 自动生成的方法存根 - - } - - public void actionPerformed(ActionEvent e) { - // TODO 自动生成的方法存根 + if(e.getActionCommand().equals("计算")) { + if(in1.getText().equals("")||in2.getText().equals("")||in3.getText().equals("")) + out.setText("error!系数不能为空!"); + else { + str1=in1.getText(); + str2=in2.getText(); + str3=in3.getText(); + double a=Double.parseDouble(str1); + double b=Double.parseDouble(str2); + double c=Double.parseDouble(str3); + if(a==0) { + if(b==0) { + out.setText("error!no answer due to input."); + } + else { + double result=-c/b; + out.setText("the single root is"+result); + } + } + else { + double disc=b*b-4*a*c; + double w=2*a; + double term1=-b/w; + double t=Math.abs(disc); + double term2=Math.sqrt(t)/w; + if(disc<0) + out.setText("complex roots:x1="+term1+",x2="+term2); + else + out.setText("real roots:x1="+(term1+term2)+",x2="+(term1-term2)); + } + + + + } + } + else if(e.getActionCommand().equals("清空")) { + out.setText(""); + in1.setText(""); + in2.setText(""); + in3.setText(""); + } } -- Gitee From 033e4dbec92e2c5b99ab1eb92febbfb5a82a582f Mon Sep 17 00:00:00 2001 From: esther <1992630233@qq.com> Date: Fri, 3 Jun 2022 11:02:55 +0800 Subject: [PATCH 13/15] =?UTF-8?q?=E5=AE=8C=E6=88=90=E4=BA=86log=E5=92=8Cln?= =?UTF-8?q?=E5=87=BD=E6=95=B0=EF=BC=8C=E5=B9=B6=E5=AF=B9=E5=A4=96=E8=A7=82?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E8=BF=9B=E8=A1=8C=E4=BA=86=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/panel1.java | 4 +- src/java2022spring/panel2.java | 69 +++++++++++++++++++++++++++++++--- 2 files changed, 67 insertions(+), 6 deletions(-) diff --git a/src/java2022spring/panel1.java b/src/java2022spring/panel1.java index de083a0..f5f7926 100644 --- a/src/java2022spring/panel1.java +++ b/src/java2022spring/panel1.java @@ -54,12 +54,14 @@ public class panel1 extends JPanel implements ActionListener{ //设置keyboard for(int i=0;i<4;i++) { fs[i]=new JButton(function[i]); - sp1.add(fs[i]); //West 1×4 + sp1.add(fs[i]); //West 1×4 + fs[i].setBackground(new Color(230,230,250)); } for(int i=0;i?人民币"); b=new JLabel("="); m=new JLabel("汇率换算 请输入数字:"); diff --git a/src/java2022spring/panel4.java b/src/java2022spring/panel4.java index eb6fe54..9acdd1d 100644 --- a/src/java2022spring/panel4.java +++ b/src/java2022spring/panel4.java @@ -1,5 +1,6 @@ package java2022spring; +import java.awt.Color; import java.awt.event.*; import javax.swing.*; @@ -23,7 +24,7 @@ public class panel4 extends JPanel implements ActionListener{ c=new JLabel("= 0"); ok=new JButton("计算"); clear=new JButton("清空"); - m=new JLabel("请输入系数:"); + m=new JLabel("请输入系数:"); out=new JTextArea(10,30); //设置监听器 ok.addActionListener(this); -- Gitee From e3a8bfc0257dc5c8b55115ad7be337fc3fac27e4 Mon Sep 17 00:00:00 2001 From: esther <1992630233@qq.com> Date: Thu, 9 Jun 2022 12:20:06 +0800 Subject: [PATCH 15/15] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E4=B8=89?= =?UTF-8?q?=E8=A7=92=E5=87=BD=E6=95=B0=E4=BB=A3=E7=A0=81=E3=80=82=E5=B9=B6?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=B8=80=E4=BA=9B=E5=AE=B9=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/Calculator.java | 2 +- src/java2022spring/panel1.java | 52 +++++++++++++-------- src/java2022spring/panel2.java | 74 +++++++++++++++++++----------- src/java2022spring/panel3.java | 2 +- src/java2022spring/perform.java | 6 +-- 5 files changed, 83 insertions(+), 53 deletions(-) diff --git a/src/java2022spring/Calculator.java b/src/java2022spring/Calculator.java index ed4f8f4..e3df413 100644 --- a/src/java2022spring/Calculator.java +++ b/src/java2022spring/Calculator.java @@ -13,7 +13,7 @@ public class Calculator extends JFrame implements ActionListener { JPanel mainp; //主面板 JPanel p0; //子菜单触发事件的面板 panel1 basic; - panel2 advance; //(extends panel)的替换面板1 + panel2 advance; //替换面板 panel3 trans; panel4 jie; JMenuBar menubar; diff --git a/src/java2022spring/panel1.java b/src/java2022spring/panel1.java index e074cb1..67e95a3 100644 --- a/src/java2022spring/panel1.java +++ b/src/java2022spring/panel1.java @@ -10,7 +10,7 @@ public class panel1 extends JPanel implements ActionListener{ JPanel keyboard; JPanel sp1,sp2; JTextField textin,textout; - String [] button={"C","÷","×","CE", + String [] button={"C","÷","×","Back", "7","8","9","-", @@ -106,8 +106,8 @@ public class panel1 extends JPanel implements ActionListener{ alg=0; //恢复默认值 } - //按下CE退一格 - if(e.getActionCommand().equals("CE")) { + //按下Back退一格 + if(e.getActionCommand().equals("Back")) { str1=textin.getText(); str2=textout.getText(); if(!str1.equals("")) { @@ -159,7 +159,11 @@ public class panel1 extends JPanel implements ActionListener{ //小数点 if(e.getActionCommand().equals(".")) { - str1=textin.getText(); + str1=textin.getText(); + if(str1.equals("")) { + textin.setText("error!不能这样使用!"); + } + else { char s[]=str1.toCharArray();//将字符串转为字符数组 int place=str1.length(); if(Character.isDigit(s[place-1])) { @@ -168,15 +172,17 @@ public class panel1 extends JPanel implements ActionListener{ else { textin.setText("error!不能这样使用!"); } + } } //%取余 if(e.getActionCommand().equals("%")) { - str1=textin.getText(); + if(str1.equals("")) { textin.setText("error!不能这样使用!"); } else { + str1=textin.getText(); textout.setText(str1+"%"); textin.setText(""); str3=str1; @@ -185,21 +191,29 @@ public class panel1 extends JPanel implements ActionListener{ } if(e.getActionCommand().equals("=")&&alg==1) { str1=textin.getText(); - double x=Double.parseDouble(str3); //记得再修改下 + double x=Double.parseDouble(str3); + int x1=(int)x; double y=Double.parseDouble(str1); - double result=x%y; + int y1=(int)y; + double result=x1%y1; //转化为整数 textin.setText(""); textout.setText(textout.getText()+str1+"="+result); } //√开平方 - if(e.getActionCommand().equals("√")) { + if(e.getActionCommand().equals("√")) { str1=textin.getText(); + str1=str1+"+0"; + Scanner scanner=new Scanner(textin.getText()); + str1= performCalculate.Separate(scanner.next()); if(str1.equals("")) { textin.setText("error!请输入数字"); } + else if(Double.parseDouble(str1)<0) { + textin.setText("必须输入大于0的数字!"); + } else { double x=Double.parseDouble(str1); result=Math.sqrt(x); @@ -223,17 +237,17 @@ public class panel1 extends JPanel implements ActionListener{ textin.setText(""); } } - if(e.getActionCommand().equals("-")) { - str1=textin.getText(); - str2=textout.getText(); - if(str1.equals("")&&str2.equals("")) { - textin.setText("error!不能这样使用!"); //没有数字不可以进行运算 - } - else { - textout.setText(str2+str1+"-"); - textin.setText(""); - } - } + if(e.getActionCommand().equals("-")) { + str1=textin.getText(); + str2=textout.getText(); + if(str1.equals("")&&str2.equals("")) { + textin.setText("0-"); //没有数字不可以进行运算 + } + else { + textout.setText(str2+str1+"-"); + textin.setText(""); + } + } if(e.getActionCommand().equals("×")) { str1=textin.getText(); str2=textout.getText(); diff --git a/src/java2022spring/panel2.java b/src/java2022spring/panel2.java index 781df11..53d91e3 100644 --- a/src/java2022spring/panel2.java +++ b/src/java2022spring/panel2.java @@ -1,7 +1,4 @@ package java2022spring; - - - import javax.swing.JPanel; import javax.swing.JLabel; @@ -29,7 +26,7 @@ public class panel2 extends JPanel implements ActionListener{ "(", ")", "1/x", "x^2", "x^3", "x!","√","y√x", "e" ,"lnx", "logxy", "MC", "M+" ,"M-" ,"MR", - "sin" ,"e^x" ,"C" ,"CE" ,"+", + "sin" ,"e^x" ,"C" ,"Back" ,"+", "cos" ,"7" ,"8" ,"9" ,"-", "tan", "4", "5" ,"6" , "×", "π" ,"1" ,"2" ,"3" ,"÷", @@ -42,7 +39,7 @@ public class panel2 extends JPanel implements ActionListener{ perform performCalculate=new perform(); JButton bs[] = new JButton[button.length]; - //8row,5col + //panel2的版面设计 panel2() { @@ -54,7 +51,6 @@ public class panel2 extends JPanel implements ActionListener{ textin.setFont(new java.awt.Font("黑体", Font.PLAIN, 40)); textout.setFont(new java.awt.Font("黑体", Font.PLAIN, 40)); setBackground(Color.cyan); - // textout.setBackground(Color.lightGray); textin.setPreferredSize(new Dimension(400, 60)); textout.setPreferredSize(new Dimension(400, 65)); textout.setEnabled(false); @@ -62,7 +58,7 @@ public class panel2 extends JPanel implements ActionListener{ textout.setHorizontalAlignment(SwingConstants.RIGHT); - //设置keyboard 400lenghth 450width + //设置keyboard for(int i=0;i saveSign,Link case "×": result=String.valueOf(x*y);break; case "÷": - // if(x==0) { - // basic.textin.setText("被除数不能为0"); - // break; - // } - // else + result=String.valueOf(x/y);break; } saveNumber.set(signindex, result);// 两个数算完后把结果给前一个数 -- Gitee