java3、编写GUI界面,模拟抢红包游戏,在界面输入红包大小和抢红包人姓名(用逗号隔开),输出系统当前时间以及每个人抢的红包大小,要求每个人抢的红包最少不能少于0.01元,精确到小数点后两位。
时间: 2024-03-31 07:35:06 浏览: 42
JAVA实现简单抢红包算法(模拟真实抢红包)
好的,这个问题需要用到Java的Swing库和时间模块,我可以给你提供一个简单的解决方案。以下是代码实现:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
public class RedPacketGame extends JFrame {
private JLabel redPacketLabel;
private JTextField redPacketField;
private JLabel grabbersLabel;
private JTextField grabbersField;
private JButton startButton;
private JTextArea resultArea;
public RedPacketGame() {
super("抢红包游戏");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500, 300);
setLayout(new GridLayout(4, 2));
redPacketLabel = new JLabel("红包大小:");
redPacketField = new JTextField();
grabbersLabel = new JLabel("抢红包人:");
grabbersField = new JTextField();
startButton = new JButton("开始抢红包");
resultArea = new JTextArea();
add(redPacketLabel);
add(redPacketField);
add(grabbersLabel);
add(grabbersField);
add(startButton);
add(new JPanel());
add(new JScrollPane(resultArea));
startButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 获取红包大小和抢红包人
double redPacket = Double.parseDouble(redPacketField.getText());
String[] grabbers = grabbersField.getText().split(",");
ArrayList<String[]> grabberList = new ArrayList<>();
// 计算每人抢到的红包金额
double total = 0;
for (int i = 0; i < grabbers.length; i++) {
double grabberRp;
if (i == grabbers.length-1) {
grabberRp = Math.round((redPacket-total)*100)/100.0;
} else {
grabberRp = Math.round(redPacket/grabbers.length*100)/100.0;
}
total += grabberRp;
if (grabberRp < 0.01) {
grabberRp = 0.01;
}
grabberList.add(new String[]{grabbers[i], String.format("%.2f", grabberRp)});
}
// 输出结果
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
resultArea.append(sdf.format(new Date()) + "\n");
for (String[] grabber : grabberList) {
resultArea.append(grabber[0] + "抢到了" + grabber[1] + "元\n");
}
}
});
}
public static void main(String[] args) {
RedPacketGame game = new RedPacketGame();
game.setVisible(true);
}
}
```
通过运行这个代码,你可以在GUI界面中输入红包大小和抢红包人,点击“开始抢红包”按钮后,程序会输出当前时间和每个人抢到的红包金额。
需要注意的是,程序中限制了每个人抢到的红包金额最少为0.01元,如果计算出来的金额小于这个数,程序会自动将其改为0.01元。另外,程序中使用了Java的Swing库来构建GUI界面,使用了时间模块来获取当前时间。
阅读全文