编程实现发红包程序
具体描述:
某群有一个群主和三名成员,群主可以给成员发红包,成员可以收
群主发的红包;
.红包分为:普通红包、拼手气红包和专属红包;
. 群主发红包的金额,从其余额中扣除;
成员领取红包后,保存到成员余额中;
要求定义用户类、群主类和成员类,群主类和成员类要继承于用户类;
代码要符合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);
}
}}
使用基本运算除/,和求余操作%,进行操作得到所需币值个数。
mport java.util.Scanner;
public class Treedian15 {
public static void compute(double x){
int i,j,k,l,c,v,q,w,e,r,t,y;
i = (int) (x / 100);
x = x % 100;
if(i>0){System.out.println("100元 "+i+"个");}
j= (int) (x/50);
x=x%50;
if(j>0)System.out.println("50元 "+j+"个");
k= (int) (x/20);
x=x%20;
if(k>0)System.out.println("20元 "+k+"个");
l= (int) (x/10);
x=x%10;
if(l>0)System.out.println("10元 "+l+"个");
c= (int) (x/5);
x=x%5;
if(c>0)System.out.println("5元 "+c+"个");
v= (int) (x/2);
x=x%2;
if(v>0)System.out.println("2元 "+v+"个");
q= (int) (x/1);
x=x%1;
if(q>0)System.out.println("1元 "+q+"个");
w= (int) (x/0.5);
x=x%0.5;
if(w>0)System.out.println("5角 "+w+"个");
e= (int) (x/0.2);
x=x%0.2;
if(e>0)System.out.println("2角 "+e+"个");
r= (int) (x/0.1);
x=x%0.1;
if(r>0)System.out.println("1角 "+r+"个");
t= (int) (x/0.05);
x=x%0.05;
if(t>0)System.out.println("5分 "+t+"个");
y= (int) (x/0.01);
x=x%0.01;
if(y>0)System.out.println("1分 "+y+"个");
}
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.print("请输入金额:");
double x=scanner.nextDouble();
compute(x);
}
}