Java实现简单计算器、抽票程序

计算器:

  1 import java.awt.BorderLayout;
  2 import java.awt.Container;
  3 import java.awt.Font;
  4 import java.awt.GridLayout;
  5 import java.awt.event.ActionEvent;
  6 import java.awt.event.ActionListener;
  7 
  8 import javax.swing.JButton;
  9 import javax.swing.JFrame;
 10 import javax.swing.JOptionPane;
 11 import javax.swing.JPanel;
 12 import javax.swing.JTextField;
 13 
 14 public class Calculator extends JFrame implements ActionListener {
 15     // 属性
 16     JTextField txtResult;
 17     String a = "", b = "", operator = "";
 18     boolean beginDigit = false, beginOperator = false,beginEquals=false;
 19     //beginDigit记录此次输入前是否输入数字,beginOpertator记录此次输入前是否输入运算符,用于处理多次连续输入运算符的情况(5+-3)
 20     //beginEquals记录此次输入前是否进行过运算
 21     public Calculator() {
 22         setTitle("计算器");
 23         setSize(240, 270);
 24         setResizable(false);
 25         setLocationRelativeTo(null);
 26         setDefaultCloseOperation(EXIT_ON_CLOSE);
 27 
 28         Container contentPane = this.getContentPane();
 29         contentPane.setLayout(new BorderLayout(1, 5));
 30         JPanel pnlNorth = new JPanel();
 31         JPanel pnlCenter = new JPanel();
 32 
 33         pnlNorth.setLayout(new BorderLayout());
 34         pnlCenter.setLayout(new GridLayout(4, 4, 3, 3));
 35 
 36         Font font = new Font("Times Roman", Font.BOLD, 20);
 37 
 38         contentPane.add(BorderLayout.NORTH, pnlNorth);
 39         contentPane.add(BorderLayout.CENTER, pnlCenter);
 40 
 41         txtResult = new JTextField();
 42         txtResult.setFont(font);
 43         txtResult.setEnabled(false);
 44         JButton btnClear = new JButton("C");
 45         btnClear.setFont(font);
 46         btnClear.addActionListener(this);
 47 
 48         pnlNorth.add(BorderLayout.CENTER, txtResult);
 49         pnlNorth.add(BorderLayout.EAST, btnClear);
 50 
 51         String[] captions = { "7", "8", "9", "+", "4", "5", "6", "-", "1", "2", "3", "*", "0", ".", "/", "=", };
 52         for (int i = 0; i < captions.length; i++) {
 53             JButton btn = new JButton(captions[i]);
 54             btn.setFont(font);
 55             pnlCenter.add(btn);
 56             btn.addActionListener(this);
 57         }
 58     }
 59     public static void main(String[] args) {
 60         JFrame frame = new Calculator();
 61         frame.setVisible(true);
 62     }
 63     
 64     @Override
 65     public void actionPerformed(ActionEvent event) {
 66         String cmd = event.getActionCommand();
 67         if ("0123456789".contains(cmd)) {
 68             if(beginEquals==true) {//如果之前已进行过运算,再次直接输入数字就需要进行清空
 69                 txtResult.setText("");
 70                 a="";b = "";operator = "";beginDigit=false;
 71             }
 72             if (beginDigit == true) {
 73                 txtResult.setText(txtResult.getText() + cmd);
 74             } else {
 75                 txtResult.setText(cmd);
 76                 beginDigit = true;
 77                 beginEquals=false;//需要进行置换,不然无法进行上一个if语句
 78             }
 79             beginOperator=true;
 80         }
 81         if ("+-*/".contains(cmd)) {
 82             beginEquals=false;
 83             if (operator != ""&&beginOperator==true) {
 84                 if (txtResult.getText() != null) {
 85                     b = txtResult.getText();
 86                     if ("+".equals(operator)) {
 87                         a = String.valueOf(Float.parseFloat(a) + Float.parseFloat(b));
 88                     }if ("-".equals(operator)) {
 89                         a = String.valueOf(Float.parseFloat(a) - Float.parseFloat(b));
 90                     }if ("*".equals(operator)) {
 91                         a = String.valueOf(Float.parseFloat(a) * Float.parseFloat(b));
 92                     }if ("/".equals(operator)) {
 93                         a = String.valueOf(Float.parseFloat(a) / Float.parseFloat(b));
 94                     }
 95                     operator = cmd;//再次记录运算符
 96                     txtResult.setText(a);
 97                 }
 98             } else {
 99                 a = txtResult.getText();
100                 operator = cmd;
101             }
102             beginDigit = false;
103             beginOperator=false;
104         }
105         if (".".equals(cmd)) {
106             if(txtResult.getText().contains(".")) {
107                 JOptionPane.showMessageDialog(null, "不可输入多个小数点!");
108                 a=a.substring(0,a.length()-1);//删除多余的小数点
109                 txtResult.setText(a);
110             }
111             txtResult.setText(txtResult.getText() + cmd);
112         }
113         if ("C".equals(cmd)) {
114             txtResult.setText("");
115             a = "";
116             b = "";
117             operator = "";
118             beginDigit = false;
119             beginOperator=false;
120         }
121         if ("=".equals(cmd)) {
122             b=txtResult.getText();
123             if ("+".equals(operator)) {
124                 a = String.valueOf(Float.parseFloat(a) + Float.parseFloat(b));
125             }if ("-".equals(operator)) {
126                 a = String.valueOf(Float.parseFloat(a) - Float.parseFloat(b));
127             }if ("*".equals(operator)) {
128                 a = String.valueOf(Float.parseFloat(a) * Float.parseFloat(b));
129             }if ("/".equals(operator)) {
130                 a = String.valueOf(Float.parseFloat(a) / Float.parseFloat(b));
131             }
132             txtResult.setText(a);
133             a=txtResult.getText();
134             beginEquals=true;
135             beginDigit=false;
136             beginOperator=false;
137         }
138     }
139 }

抽奖:

 1 import java.util.ArrayList;
 2 import java.util.List;
 3 import java.util.Random;
 4 
 5 public class Lottery {
 6     public static void main(String[] args) {
 7         List<Integer> list=new ArrayList<>();
 8         int[] result=new int[6];
 9         for(int i=0;i<32;i++) {
10             list.add(i+1);
11         }
12         Random random=new Random();//记得得初始化一个Random对象
13         for(int i=0;i<result.length;i++) {
14             // 随机生成一个下标,下标的范围不超过list.size()
15             int index=random.nextInt(list.size());
16             //将list中下标为index的数删掉
17             result[i]=list.remove(index);
18         }
19         for(int i=0;i<result.length;i++) {
20             System.out.printf("%02d ",result[i]);
21         }
22     }
23 }

 

posted @ 2019-01-02 20:21  里昂静  阅读(426)  评论(0编辑  收藏  举报