利用java3、编写GUI界面,模拟抢红包游戏,在界面输入红包大小和抢红包人姓名(用逗号隔开),输出系统当前时间以及每个人抢的红包大小,要求每个人抢的红包最少不能少于0.01元,精确到小数点后两位。
时间: 2024-03-31 20:36:41 浏览: 94
好的,以下是Java实现GUI界面模拟抢红包游戏的代码:
```java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.text.SimpleDateFormat;
import java.util.Date;
public class RedEnvelopeGame extends JFrame implements ActionListener{
private JLabel label1;
private JTextField textField1;
private JLabel label2;
private JTextField textField2;
private JButton button;
private JTextArea textArea;
public RedEnvelopeGame(){
this.setTitle("抢红包游戏");
this.setSize(400, 300);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(3, 2, 10, 10)); // 设置面板布局
label1 = new JLabel("红包大小(元):");
panel.add(label1);
textField1 = new JTextField();
panel.add(textField1);
label2 = new JLabel("抢红包人姓名(用逗号隔开):");
panel.add(label2);
textField2 = new JTextField();
panel.add(textField2);
button = new JButton("抢红包");
button.addActionListener(this);
panel.add(button);
this.add(panel, BorderLayout.NORTH);
textArea = new JTextArea();
textArea.setEditable(false);
JScrollPane scrollPane = new JScrollPane(textArea);
this.add(scrollPane, BorderLayout.CENTER);
}
public void actionPerformed(ActionEvent e){
if(e.getSource() == button){
double money = Double.parseDouble(textField1.getText()); // 获取红包大小
String[] names = textField2.getText().split(","); // 获取抢红包人姓名列表
Date now = new Date(); // 获取当前时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = sdf.format(now);
// 计算每个人抢到的红包金额
double total_money = 0;
for(int i = 0; i < names.length; i++){
double money_i;
if(i == names.length - 1){
money_i = Math.round((money - total_money) * 100) / 100.0;
}else{
money_i = Math.round((money / names.length) * 100) / 100.0;
}
money_i = Math.max(money_i, 0.01);
total_money += money_i;
textArea.append(names[i] + "抢到了" + money_i + "元\n");
}
textArea.append("系统当前时间:" + time + "\n\n");
}
}
public static void main(String[] args){
RedEnvelopeGame game = new RedEnvelopeGame();
game.setVisible(true);
}
}
```
运行代码后,会弹出一个窗口,输入红包大小和抢红包人姓名后,点击“抢红包”按钮,就会在窗口下方输出每个人抢到的红包金额和系统当前时间。注意,代码中做了一些限制,每个人抢到的红包金额最少为0.01元,且最后一个人抢到的金额为总金额减去前面所有人抢到的金额之和。
阅读全文