首页 > 代码库 > java设计之简单的JAVA计算器
java设计之简单的JAVA计算器
做这个东西主要是为了练习一下以前学习过的java Swing,所以那些复杂的算法就没有加载到里面去........
先展示一下效果....,额,当然不是这个样子....
---》
代码:
1 package dialog_color; 2 3 import java.awt.BorderLayout; 4 import java.awt.Color; 5 import java.awt.Container; 6 import java.awt.FlowLayout; 7 import java.awt.Font; 8 import java.awt.GridLayout; 9 import java.awt.Insets; 10 import java.awt.event.ActionEvent; 11 import java.awt.event.ActionListener; 12 import java.math.BigInteger; 13 import java.util.ArrayList; 14 import java.util.List; 15 import java.util.Stack; 16 import java.util.regex.Matcher; 17 import java.util.regex.Pattern; 18 19 import javax.swing.BorderFactory; 20 import javax.swing.ImageIcon; 21 import javax.swing.JButton; 22 import javax.swing.JFrame; 23 import javax.swing.JLabel; 24 import javax.swing.JPanel; 25 import javax.swing.JTextField; 26 import javax.swing.UIManager; 27 /*简易计算器*/ 28 public class Simple_jisuanqi { 29 public static void main(String args []) { 30 31 Caculate mycacu = new Caculate(); 32 // Container con =mycacu.getContentPane(); 33 mycacu.setTitle("GXjun计算器"); 34 35 } 36 } 37 class Caculate extends JFrame implements ActionListener 38 { 39 Container mycon; //设置重量级容器 40 JPanel jpanel_1,jpanel_2,jpanel_3; //设置轻量级布局 41 myJButton button []= new myJButton [20]; 42 JTextField mytext; 43 JLabel label; 44 GridLayout grid = new GridLayout(4,4); 45 Caculate(){ //构造函数 46 mycon = getContentPane(); 47 jpanel_1 = new JPanel(); /*默认的格式为FlowLayout*/ 48 jpanel_2 =new JPanel(); 49 jpanel_3 = new JPanel(); 50 jpanel_2.setLayout(grid); 51 mytext = new JTextField(14); 52 mytext.setEditable(false); //设置成为不能 53 mytext.setFont(new Font("Arial",Font.BOLD,22)); 54 /* for(int i=0;i<20;i++) 55 button[i]=new myJButton(null);*/ 56 button[0] = new myJButton(" 后退 ",22); 57 button[0].addActionListener(this); 58 button[1] = new myJButton(" 归零 ",22); 59 button[1].addActionListener(this); 60 jpanel_1.add(button[0]); 61 jpanel_1.add(mytext); 62 jpanel_1.add(button[1]); 63 label = new JLabel(new ImageIcon("C:\\Users\\Administrator.USERSWO-MKA59UH\\Desktop\\java\\bin\\dialog_color\\a.jpg")); 64 // label = new JLabel(new ImageIcon("D:\\2\\2.gif")); 65 jpanel_3.add(label); 66 for(int i=2;i<12;i++) 67 button[i]=new myJButton(" "+i+" ",26); 68 char str[][]={{‘7‘,‘8‘,‘9‘,‘/‘},{‘4‘,‘5‘,‘6‘,‘*‘},{‘1‘,‘2‘,‘3‘,‘-‘},{‘0‘,‘.‘,‘+‘,‘=‘}}; 69 for(int i=0;i<4;i++) 70 for(int j=0;j<4;j++){ 71 button[2+i*4+j] =new myJButton(" "+str[i][j]+" ",26); 72 button[2+i*4+j].addActionListener(this); 73 jpanel_2.add(button[2+i*4+j]); 74 } 75 mycon.add(jpanel_1,BorderLayout.CENTER); 76 mycon.add(jpanel_3,BorderLayout.NORTH); 77 mycon.add(jpanel_2,BorderLayout.SOUTH); 78 init(); 79 } 80 void init() /*相关组件的一系列的初始化*/ 81 { 82 setBounds(100, 100, 477, 280); 83 setVisible(true); 84 setResizable(false); 85 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 86 } 87 String str =""; 88 @Override 89 public void actionPerformed(ActionEvent e) { 90 // TODO Auto-generated method stub 91 //System.out.println(e.getActionCommand()); 92 if(e.getSource()==button[0]||e.getSource()==button[1]) 93 { 94 if(e.getSource()==button[0]){ 95 System.out.println(str); 96 if(!str.isEmpty()){ 97 str=str.substring(0, str.length()-1) ; //后退一格 98 } 99 }100 else str="";101 }102 else103 {104 if(e.getSource()==button[17]){ 105 //等于号的时候,又该如何处理? 正则表达式106 //System.out.println(e.getActionCommand());107 /*System.out.println(sove_calc(str));*/108 Double judge=sove_calc(str.trim());109 if(judge==Double.MAX_VALUE)110 {111 mytext.setText("error!");112 validate();113 return;114 }115 else str=judge.toString();116 }117 else{118 str+=e.getActionCommand().toString().trim();119 }120 }121 if(str.isEmpty()) mytext.setText("0");122 else mytext.setText(str);123 validate();124 }125 private Double sove_calc(String str)126 {127 /*怎么提起出字符串里面的运算符号呢*/128 Pattern mypa = Pattern.compile("\\+|\\-|\\*|\\/");129 Matcher mtma = mypa.matcher(str);130 List<String> listhoge = new ArrayList();131 while(mtma.find()) listhoge.add(mtma.group());132 String [] hoge = listhoge.toArray(new String [0]); //获取运算符号133 /*突然遇到一个问题怎么从字符串提起浮点型数据呢?*/134 Pattern mypart = Pattern.compile("\\.\\d|\\d+(\\.\\d+)?"); 135 Matcher mtmatcher =mypart.matcher(str);136 List<String> listval = new ArrayList();137 while(mtmatcher.find())138 listval.add(mtmatcher.group());139 String [] val=listval.toArray(new String[0]); 140 double sum=Double.parseDouble(val[0]);141 for( int i=0;i<hoge.length;i++)142 {143 System.out.println(hoge[i].charAt(0));144 switch(hoge[i].charAt(0))145 {146 case ‘+‘: sum += Double.parseDouble(val[i+1]); break;147 case ‘-‘: sum -= Double.parseDouble(val[i+1]); break;148 case ‘*‘: sum *= Double.parseDouble(val[i+1]); break;149 case ‘/‘:150 {151 Double tem=Double.parseDouble(val[i+1]);152 if(tem.equals(0)) return Double.MAX_VALUE;153 sum/=tem;154 break;155 }156 default : System.out.println("error!"); break;157 }158 }159 return sum;160 }161 }162 class myJButton extends JButton163 {164 public myJButton(String name,int size) 165 {166 // TODO Auto-generated constructor stub167 super(name);168 setFont(new Font("仿宋",Font.BOLD,size));169 setMargin(new Insets(2,2,2,2));170 setBorder(BorderFactory.createRaisedBevelBorder());171 setBackground(Color.LIGHT_GRAY);172 } 173 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。