发红包程序,写过运行不出来,求解答

编程实现发红包程序
具体描述:
某群有一个群主和三名成员,群主可以给成员发红包,成员可以收
群主发的红包;
.红包分为:普通红包、拼手气红包和专属红包;
. 群主发红包的金额,从其余额中扣除;
成员领取红包后,保存到成员余额中;
要求定义用户类、群主类和成员类,群主类和成员类要继承于用户类;
代码要符合JavaBean规范。

引自chatgpt

import java.util.ArrayList;
import java.util.Random;
 class User {
    private String name;
    private double balance;

    public User(String name, double balance) {
        this.name = name;
        this.balance = balance;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getBalance() {
        return balance;
    }

    public void setBalance(double balance) {
        this.balance = balance;
    }
}
 class GroupOwner extends User {
    public GroupOwner(String name, double balance) {
        super(name, balance);
    }

    // 发普通红包
    public ArrayList<Double> sendCommonRedPacket(double totalAmount, int count) {
        if (totalAmount > this.getBalance()) {
            System.out.println("余额不足,发红包失败。");
            return null;
        }

        ArrayList<Double> list = new ArrayList<Double>();

        double amount = totalAmount / count;
        for (int i = 0; i < count; i++) {
            list.add(amount);
        }

        this.setBalance(this.getBalance() - totalAmount);

        System.out.println("成功发出" + count + "个普通红包,共" + totalAmount + "元。");

        return list;
    }

    // 发拼手气红包
    public ArrayList<Double> sendLuckyRedPacket(double totalAmount, int count) {
        if (totalAmount > this.getBalance()) {
            System.out.println("余额不足,发红包失败。");
            return null;
        }

        ArrayList<Double> list = new ArrayList<Double>();

        double leftAmount = totalAmount;
        int leftCount = count;

        Random random = new Random();
        for (int i = 0; i < count - 1; i++) {
            double amount = random.nextDouble() * leftAmount / leftCount * 2;
            list.add(amount);
            leftAmount -= amount;
            leftCount--;
        }

        list.add(leftAmount);

        this.setBalance(this.getBalance() - totalAmount);

        System.out.println("成功发出" + count + "个拼手气红包,共" + totalAmount + "元。");

        return list;
    }

    // 发专属红包
    public ArrayList<Double> sendExclusiveRedPacket(double totalAmount, String memberName) {
        if (totalAmount > this.getBalance()) {
            System.out.println("余额不足,发红包失败。");
            return null;
        }

        ArrayList<Double> list = new ArrayList<Double>();

        list.add(totalAmount);

        this.setBalance(this.getBalance() - totalAmount);

        System.out.println("成功发出1个专属红包给" + memberName + ",共" + totalAmount + "元。");

        return list;
    }
}

 class GroupMember extends User {
    public GroupMember(String name, double balance) {
        super(name, balance);
    }

    // 收红包
    public void receiveRedPacket(double amount) {
        this.setBalance(this.getBalance() + amount);
        System.out.println("成功收到" + amount + "元红包。");
    }
}

public class Main {
public static void main(String[] args) {
    GroupOwner owner = new GroupOwner("群主", 1000);
    GroupMember member1 = new GroupMember("成员1", 0);
    GroupMember member2 = new GroupMember("成员2", 0);
    GroupMember member3 = new GroupMember("成员3", 0);

    // 发普通红包
    ArrayList<Double> list = owner.sendCommonRedPacket(200, 5);
    for (Double amount : list) {
        member1.receiveRedPacket(amount);
    }

    // 发拼手气红包
    list = owner.sendLuckyRedPacket(300, 5);
    for (Double amount : list) {
        member2.receiveRedPacket(amount);
    }

    // 发专属红包
    list = owner.sendExclusiveRedPacket(100, "成员3");
    for (Double amount : list) {
        member3.receiveRedPacket(amount);
    }
}}