写Java计算器小感
2010-09-27 17:46
190 查看
这周也写了写简单的计算器,当是练习一下图形界面里一些组件类的运用吧。
其实,用c语言写过计算器的同学应该是大有所感的,记得自己之前用c写计算器那是足足花了3周,并且感觉写出来的效果真的很粗糙。但是,当我们为只要这样只要去运用组件类就能写出这么漂亮的界面而兴奋时,我自己觉得也有问题出现在脑海中。譬如,在用c语言想要实现某个功能时,或许我们可能有不同的方法去实现该功能,我们就会开动脑筋去想,怎么写才是最精简的?怎样才能用最少的代码最好地实现这个功能呢?其实在这些思考中,如果当你找到你认为的perfect的方法时,我们或许为之感到兴奋,颇有成就感。但是,我自己觉得,Java中这些组件的存在,确实为我们提供了很大的方便,然而,很多时候都不用我们去想怎么将它做的更精练,因为只要你想要实现什么,你只要找到对应功能的类,你就按那些方法的用法套进去就ok了,所以自己有这样的疑问:这样是不是降低了对我们逻辑思维的要求了呢?如果实现某一个特定的功能,人人都是用同样的方法去做,那么,做出来有什么不同呢?而怎样才能让你自己的程序与众不同呢?
可能也是因为自己学得不深,才会有这样的感觉吧,不过确实自己在想,每个人都是用这些类,这些方法实现了这样的功能,究竟怎样才能叫做做得更好呢?希望大家多多说说自己的看法,建议,让我疑惑揭开些许哈,谢啦~~
运行的界面如下:
package addEvent; import java.lang.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class calculate extends Frame { double result = 0, tmp = 0; int op = 0; //0:无,1:+,2:-,3:*,4:/ String num = "0"; JTextField T1; Button B1,B2,B3,B4,B5,B6,B7,B8,B9,B10, B11,B12,B13,B14,B15,B16,B17,B18,B19; public calculate() { this.setLayout(null); T1 = new JTextField(num) ; T1.setBounds(20,30,158,28); T1.setHorizontalAlignment(JTextField.RIGHT );//字靠右 T1.setEditable(false);//不许在 T1 内编辑 T1.setBackground(Color.WHITE); this.add(T1); B1 = new Button("1"); B1.setBounds(20,65,35,25); B1.setForeground(Color.BLUE); B1.addMouseListener( new MouseAdapter() { public void mouseClicked(MouseEvent e) { //单击按钮“1” click_print("1"); } }); this.add(B1); B2 = new Button("2"); B2.setBounds(60,65,35,25); B2.setForeground(Color.BLUE); B2.addMouseListener( new MouseAdapter() { public void mouseClicked(MouseEvent e) { //单击按钮“2” click_print("2"); } }); this.add(B2); B3 = new Button("3"); B3.setBounds(100,65,35,25); B3.setForeground(Color.BLUE); B3.addMouseListener( new MouseAdapter() { public void mouseClicked(MouseEvent e) { //单击按钮“3” click_print("3"); } }); this.add(B3); B4 = new Button("4"); B4.setBounds(20,95,35,25); B4.setForeground(Color.BLUE); B4.addMouseListener( new MouseAdapter() { public void mouseClicked(MouseEvent e) { //单击按钮“4” click_print("4"); } }); this.add(B4); B5 = new Button("5"); B5.setBounds(60,95,35,25); B5.setForeground(Color.BLUE); B5.addMouseListener( new MouseAdapter() { public void mouseClicked(MouseEvent e) { //单击按钮“5” click_print("5"); } }); this.add(B5); B6 = new Button("6"); B6.setBounds(100,95,35,25); B6.setForeground(Color.BLUE); B6.addMouseListener( new MouseAdapter() { public void mouseClicked(MouseEvent e) { //单击按钮“6” click_print("6"); } }); this.add(B6); B7 = new Button("7"); B7.setBounds(20,125,35,25); B7.setForeground(Color.BLUE); B7.addMouseListener( new MouseAdapter() { public void mouseClicked(MouseEvent e) { //单击按钮“7” click_print("7"); } }); this.add(B7); B8 = new Button("8"); B8.setBounds(60,125,35,25); B8.setForeground(Color.BLUE); B8.addMouseListener( new MouseAdapter() { public void mouseClicked(MouseEvent e) { //单击按钮“8” click_print("8"); } }); this.add(B8); B9 = new Button("9"); B9.setBounds(100,125,35,25); B9.setForeground(Color.BLUE); B9.addMouseListener( new MouseAdapter() { public void mouseClicked(MouseEvent e) { //单击按钮“9” click_print("9"); } }); this.add(B9); B10 = new Button("0"); B10.setBounds(20,155,35,25); B10.setForeground(Color.BLUE); B10.addMouseListener( new MouseAdapter() { public void mouseClicked(MouseEvent e) { //单击按钮“0” click_print("0"); } }); this.add(B10); B11 = new Button("+"); B11.setBounds(140,65,35,25); B11.setForeground(Color.RED); B11.addMouseListener( new MouseAdapter() { public void mouseClicked(MouseEvent e) { //单击按钮“+” calcu(); op = 1; num = ""; } }); this.add(B11); B12 = new Button("-"); B12.setBounds(140,95,35,25); B12.setForeground(Color.RED); B12.addMouseListener( new MouseAdapter() { public void mouseClicked(MouseEvent e) { //单击按钮“-” calcu(); op = 2; num = ""; } }); this.add(B12); B13 = new Button("*"); B13.setBounds(140,125,35,25); B13.setForeground(Color.RED); B13.addMouseListener( new MouseAdapter() { public void mouseClicked(MouseEvent e) { //单击按钮“*” calcu(); op = 3; num = ""; } }); this.add(B13); B14 = new Button("/"); B14.setBounds(140,155,35,25); B14.setForeground(Color.RED); B14.addMouseListener( new MouseAdapter() { public void mouseClicked(MouseEvent e) { //单击按钮“/” calcu(); op = 4; num = ""; } }); this.add(B14); B15 = new Button("."); B15.setBounds(60,155,35,25); B15.setForeground(Color.BLUE); B15.addMouseListener( new MouseAdapter() { public void mouseClicked(MouseEvent e) { //单击按钮“.” click_print("."); } }); this.add(B15); B16 = new Button("C"); B16.setBounds(100,155,35,25); B16.setForeground(Color.RED); B16.addMouseListener( new MouseAdapter() { public void mouseClicked(MouseEvent e) { //单击按钮“C”归零 op = 0; tmp = 0; result = 0; T1.setText( num="0" ); } }); this.add(B16); B17 = new Button("+/-"); B17.setBounds(20,185,35,25); B17.setForeground(Color.BLUE); B17.addMouseListener( new MouseAdapter() { public void mouseClicked(MouseEvent e) { click_print("-"); } }); this.add(B17); B18 = new Button("←"); B18.setBounds(60,185,35,25); B18.setForeground(Color.RED); B18.addMouseListener( new MouseAdapter() { public void mouseClicked(MouseEvent e) { //单击按钮“←” num = num.substring(0,num.length()-1); T1.setText(num); } }); this.add(B18); B19 = new Button("="); B19.setBounds(100,185,75,25); B19.setForeground(Color.RED); B19.addMouseListener( new MouseAdapter() { public void mouseClicked(MouseEvent e) { //按[=] num = calcu(); op = 0; } }); this.add(B19); this.setBounds(200,100,200,230); this.setTitle("简单计算器"); this.setBackground(Color.PINK); this.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); this.setVisible(true); } public void click_print(String s) { if( s.equals(".") ) { if( num.indexOf('.')!=-1 ) return; //已经有小数点 if(num.equals("")) num = "0"; } if(num.equals("0")) { //现在 num 为 0 if(s.equals("0")) return; //原来的 num 已是 "0" 后面不能再加 "0" else if( !s.equals(".")) num = ""; //现在输入的若不是".",不能加在"0"之后 } num = num + s; //将现在输入的数字加在 num 之后 T1.setText(num); } public String calcu() { String resultStr; tmp = Double.parseDouble( num ); switch(op) { case 1: // + result = result + tmp; break; case 2: // - result = result - tmp; break; case 3: //* if(!num.equals("")) result = result * tmp; break; case 4: // / if(!num.equals("")) { if(tmp==0) //不可除 0 JOptionPane.showMessageDialog(null, "无法除零"); else result = result / tmp; } break; case 0: //val action result = tmp; //把目前的 num 记在 result } if( result == (long)result ) resultStr = String.valueOf((long)result); //结果是整数 else resultStr = String.valueOf(result); T1.setText(resultStr); tmp = 0; //tmp 归零 return resultStr; } public static void main(String[] para) { new calculate(); } }
其实,用c语言写过计算器的同学应该是大有所感的,记得自己之前用c写计算器那是足足花了3周,并且感觉写出来的效果真的很粗糙。但是,当我们为只要这样只要去运用组件类就能写出这么漂亮的界面而兴奋时,我自己觉得也有问题出现在脑海中。譬如,在用c语言想要实现某个功能时,或许我们可能有不同的方法去实现该功能,我们就会开动脑筋去想,怎么写才是最精简的?怎样才能用最少的代码最好地实现这个功能呢?其实在这些思考中,如果当你找到你认为的perfect的方法时,我们或许为之感到兴奋,颇有成就感。但是,我自己觉得,Java中这些组件的存在,确实为我们提供了很大的方便,然而,很多时候都不用我们去想怎么将它做的更精练,因为只要你想要实现什么,你只要找到对应功能的类,你就按那些方法的用法套进去就ok了,所以自己有这样的疑问:这样是不是降低了对我们逻辑思维的要求了呢?如果实现某一个特定的功能,人人都是用同样的方法去做,那么,做出来有什么不同呢?而怎样才能让你自己的程序与众不同呢?
可能也是因为自己学得不深,才会有这样的感觉吧,不过确实自己在想,每个人都是用这些类,这些方法实现了这样的功能,究竟怎样才能叫做做得更好呢?希望大家多多说说自己的看法,建议,让我疑惑揭开些许哈,谢啦~~
运行的界面如下:
![](http://hi.csdn.net/attachment/201009/27/0_1285579017wUT0.gif)
相关文章推荐
- 使用Java 创建一个计算器
- Java中的计算器算法
- Java 小练习之计算器
- java 计算器
- 计算器 java
- java 计算器代码
- 计算器核心算法代码实现(Java)
- 【java web】--JavaScript让计算器无需Switch和if else
- java运用面向对象的思想实现计算器的小程序
- Java写的计算器程序
- java计算器的是实现
- Java对象简单实用案例之计算器实现代码
- 用java写的计算器程序
- 用java写的计算器程序
- 计算器代码(Java)
- java小程序 计算器
- Java课程设计 Java计算器
- java代码----------计算器代码
- JAVA做了个简易图像相似度计算器
- JAVA编写的一个简单的计算器