抢红包系统---(java)

 需求:直播抽奖活动,分别有【2,588,888,1000,10000】五个奖金,模拟抽奖。打印每个奖项,奖项的出现顺序随机但不重复。

package demo;

import java.util.Random;

/*
* 案例;抢红包
* 需求:直播抽奖活动,分别有【2,588,888,1000,10000】五个奖金,模拟抽奖。打印每个奖项,奖项的出现顺序随机但不重复
*
* */
public class RobRedPack {
    public static void main(String[] args) {
        //1.定义数组表示所有的奖项
        int [] arr = {2,588,888,1000,10000};
        //2.定义新数组保存抽取的结果
        int [] newarr = new int[arr.length];
        Random r = new Random();
        for (int i = 0; i < arr.length; ) {
            int randomIndex = r.nextInt(arr.length);
            int price = arr[randomIndex];
            boolean flag = contains(newarr,price);
            if(!flag){
                //把当前抽取到的奖项放入newarr当中
                newarr[i] = price;
                i++;
            }

        }
        for (int j = 0; j < arr.length; j++) {
            System.out.println(newarr[j]);
        }


    }
    //抽奖的过程



    /*
    * 用来判断price新数组当中是否存在
    * 存在返回true,不存在返回false
    * */
    public static boolean contains(int [] arr,int price){
        for (int i = 0; i < arr.length; i++) {
            if(arr[i] == price){
                return true;
            }
        }
        return false;
    }



}

运行结果:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,以下是使用 Java 编写的 GUI 界面,模拟抢红包游戏,实现在界面输入红包大小和抢红包人姓名(用逗号隔开),输出系统当前时间以及每个人抢的红包大小,要求每个人抢的红包最少不能少于0.01元: ```java import java.awt.*; import java.awt.event.*; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Random; import javax.swing.*; public class RedPacketGame extends JFrame implements ActionListener { private static final long serialVersionUID = 1L; private JLabel redPacketLabel, nameLabel, resultLabel; private JTextField redPacketField, nameField; private JButton submitButton; public RedPacketGame() { super("抢红包游戏"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(new GridLayout(3, 2)); setSize(400, 150); redPacketLabel = new JLabel("红包大小:"); add(redPacketLabel); redPacketField = new JTextField(); add(redPacketField); nameLabel = new JLabel("抢红包人姓名:"); add(nameLabel); nameField = new JTextField(); add(nameField); submitButton = new JButton("抢红包"); add(submitButton); submitButton.addActionListener(this); resultLabel = new JLabel(); add(resultLabel); } @Override public void actionPerformed(ActionEvent e) { double redPacket = Double.parseDouble(redPacketField.getText().trim()); String[] names = nameField.getText().trim().split(","); int numPeople = names.length; double minAmount = 0.01; if (redPacket < numPeople * minAmount) { resultLabel.setText("红包太少啦,每个人至少能分到0.01元哦!"); return; } double[] amounts = new double[numPeople]; double remainAmount = redPacket; Random random = new Random(); for (int i = 0; i < numPeople - 1; i++) { double amount = Math.round(remainAmount / (numPeople - i) * 2 * random.nextDouble() * 100) / 100.0; amounts[i] = amount; remainAmount -= amount; } amounts[numPeople - 1] = Math.round(remainAmount * 100) / 100.0; SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String timeStr = dateFormat.format(new Date()); StringBuilder resultStr = new StringBuilder("系统当前时间:" + timeStr + "\n"); for (int i = 0; i < numPeople; i++) { String name = names[i]; double amount = amounts[i]; resultStr.append(name).append(" 抢到 ").append(amount).append(" 元\n"); } resultLabel.setText(resultStr.toString()); } public static void main(String[] args) { RedPacketGame game = new RedPacketGame(); game.setVisible(true); } } ``` 运行代码后,会出现一个简单的 GUI 界面,里面有两个输入框和一个按钮。在红包大小的输入框中输入红包大小,在抢红包人姓名的输入框中输入抢红包人姓名(多个人姓名之间用逗号隔开),然后点击“抢红包”按钮,程序会自动计算每个人抢到的红包金额,并在界面上显示系统当前时间和每个人抢到的红包金额。如果红包太少,无法保证每个人抢到的金额不少于0.01元,则会在界面上提示红包太少的消息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浩林ovo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值