用JAVA编写 GUI 界面,模拟抢红包游戏,在界面输入红包大小和抢红包人姓名(用逗号隔开),输出系统当前时间以及每个人抢的红包大小,要求每个人抢的红包最少不能少于0.01元。
时间: 2024-04-04 07:31:27 浏览: 45
基于java实现的趣味性抢红包demo
好的,下面是用 Java 编写的实现:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Date;
public class RedPacketGame extends JFrame implements ActionListener {
private JLabel labelAmount, labelName;
private JTextField textAmount, textName;
private JButton buttonStart;
private JTextArea textOutput;
public RedPacketGame() {
setTitle("抢红包游戏");
setSize(400, 400);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 创建输入红包大小的Label和TextField
labelAmount = new JLabel("红包大小:");
textAmount = new JTextField(10);
// 创建输入抢红包人姓名的Label和TextField
labelName = new JLabel("抢红包人姓名:");
textName = new JTextField(20);
// 创建"开始"按钮
buttonStart = new JButton("开始");
buttonStart.addActionListener(this);
// 创建输出信息的TextArea
textOutput = new JTextArea(10, 30);
textOutput.setEditable(false);
// 将组件添加到窗口中
JPanel panel = new JPanel(new GridLayout(4, 1));
panel.add(labelAmount);
panel.add(textAmount);
panel.add(labelName);
panel.add(textName);
panel.add(buttonStart);
panel.add(new JScrollPane(textOutput));
add(panel);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == buttonStart) {
// 获取输入的红包大小和抢红包人姓名
double amount = Double.parseDouble(textAmount.getText());
String[] names = textName.getText().split(",");
// 判断红包大小是否足够
if (amount < names.length * 0.01) {
textOutput.append("红包大小不足!\n");
return;
}
// 计算每个人抢到的红包大小
double[] redPackets = new double[names.length];
for (int i = 0; i < names.length; i++) {
if (i == names.length - 1) {
redPackets[i] = amount - sum(redPackets);
} else {
redPackets[i] = Math.round((amount / names.length) * 100) / 100.0;
}
}
// 输出系统当前时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String current_time = sdf.format(new Date());
textOutput.append("系统当前时间:" + current_time + "\n");
// 输出每个人抢到的红包大小
for (int i = 0; i < names.length; i++) {
textOutput.append(names[i] + " 抢到了 " + String.format("%.2f", redPackets[i]) + " 元。\n");
}
}
}
private double sum(double[] arr) {
double sum = 0.0;
for (double d : arr) {
sum += d;
}
return sum;
}
public static void main(String[] args) {
RedPacketGame game = new RedPacketGame();
game.setVisible(true);
}
}
```
这个界面有两个输入框,一个是红包大小,一个是抢红包人姓名,用逗号隔开。当你点击"开始"按钮之后,程序会输出系统当前时间以及每个人抢到的红包大小。注意,每个人抢到的红包大小最少不能少于0.01元。
阅读全文