简单的计算器

[1].[文件] MyCalculator.java ~ 3KB    下载(2) 跳至 [1]

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
 
public class MyCalculator extends JFrame{
     
     private static final long serialVersionUID = 1L;
     
     private String showStr= "" ,remainStr= "" ,method= "" ;
     private boolean isCalculated= false ;
     private void setShowStr(String showStr){
         this .showStr=showStr;
     }
     private String[] str={ "C" , "CE" , "+/-" ,
             "7" , "8" , "9" , "4" , "5" , "6" , "1" , "2" , "3" , "0" ,
             "." , "=" , "+" , "-" , "*" , "/" };
     JButton[] jbt= new JButton[str.length];
     JTextField jtf= new JTextField();
     
     public MyCalculator(){
         for ( int i= 0 ;i<str.length;i++){
             jbt[i]= new JButton(str[i]);
         }
         
         JPanel p1= new JPanel();
         p1.setLayout( new GridLayout( 5 , 3 ));
         for ( int i= 0 ;i<str.length- 4 ;i++){
             p1.add(jbt[i]);
         }
         
         JPanel p2= new JPanel();
         p2.setLayout( new GridLayout( 4 , 1 ));
         for ( int i=str.length- 4 ;i<str.length;i++){
             p2.add(jbt[i]);
         }
         add(jtf,BorderLayout.NORTH);
         add(p1,BorderLayout.CENTER);
         add(p2,BorderLayout.EAST);
         
         ButtonListener listener= new ButtonListener();
         for ( int i= 0 ;i<str.length;i++){
             jbt[i].addActionListener(listener);
         }
     }
     
     class ButtonListener implements ActionListener {
         public void actionPerformed(ActionEvent e){
             String s=e.getActionCommand();
             if (s== "C" &&showStr.length()> 0 ){
                 showStr=showStr.substring( 0 ,showStr.length()- 1 );
                 jtf.setText(showStr);
             } //clear
             else if (s== "CE" ){
                 showStr= "" ;
                 remainStr= "" ;
                 isCalculated= false ;
                 jtf.setText(showStr);
             }
             //clear all
             else if (s== "+" ||s== "-" ||s== "*" ||s== "/" ){
                 remainStr=showStr;
                 showStr= "" ;
                 method=s;
                 jtf.setText(showStr);
             }
             else if (s== "+/-" &&showStr== "" ){
                 showStr+= "-" ;
                 jtf.setText(showStr);
             }
             else if (s== "=" ){
                 jtf.setText(calculation(remainStr,showStr,method));
             }
             else {
                 if (isCalculated){
                     showStr= "" ;
                     jtf.setText(showStr);
                     isCalculated= false ;
                 }
                 showStr+=s;
                 jtf.setText(showStr);
             } //number
         }
     }
     private String calculation(String s1,String s2,String s3){
         Double num1=Double.parseDouble(s1);
         Double num2=Double.parseDouble(s2);
         isCalculated= true ;
         if (s3== "+" ){
             setShowStr(num1+num2+ "" );
             return num1+num2+ "" ;
         }
         else if (s3== "-" ){
             setShowStr(num1-num2+ "" );
             return num1-num2+ "" ;
         }
         else if (s3== "*" ){
             setShowStr(num1*num2+ "" );
             return num1*num2+ "" ;
         }
         else if (s3== "/" ){
             setShowStr(num1/num2+ "" );
             return num1/num2+ "" ;
         }
         return "error" ;
     }
     public static void main(String[] args){
         JFrame frame= new MyCalculator();
         frame.pack();
         frame.setLocationRelativeTo( null );
         frame.setVisible( true );
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值