ArrayList的应用(发红包)

发红包案例一

创建用户类

package Ground;
public class User {
    private String username;
    private double leftMoney;
    //构造方法
    public User(){
    }
    public User(String username,double leftMoney){
        this.username = username;
        this.leftMoney = leftMoney;
    }
    public void setUsername(String username){
        this.username = username;
    }
    public void  setLeftMoney(double leftMoney){
        this.leftMoney = leftMoney;
    }
    public String getUsername(){
        return username;
    }
    public double getLeftMoney(){
        return leftMoney;
    }
    //显示信息
    public void show(){
        System.out.println("用户名:" + username + ",余额:" + leftMoney);
    }

}

创建群主类

package Ground;

import java.util.ArrayList;

public class QunZhu extends User{
    public QunZhu(){

    }//构造方法
   public QunZhu(String username,double leftMoney){
        super(username,leftMoney);
   }
    public ArrayList<Double> send (int money,int count){
        ArrayList<Double> relist = new ArrayList<>();
        double leftMoney = super.getLeftMoney();
        if(money > leftMoney){
            return relist;
        }
        super.setLeftMoney(leftMoney - money);
        ArrayList<Double> list = new ArrayList<>();

        // 扩大100倍相当于折算成分为单位,避免小数运算造成的精度问题
        money = money * 100;
        //每份的金额
        int m = money/count;
        //不能整除的余数
        int l = money%count;
        //无论是否整除n-1粉,都是每份的等额金额
        for (int i = 0; i < count-1; i++) {
            list.add(m/100.0);//缩小100,折算成元
        }
        if (l == 0){
            list.add(m/100.0);
        }
        else{
            list.add((m+1)/100.0);
        }
        return list;
    }
}

创建成员类

package Ground;

import java.util.ArrayList;
import java.util.Random;

public class Menber extends User {
    public Menber(){}
    public Menber(String username,double leftMoney){
        super(username,leftMoney);
    }
    //打开红包,就是从集合中随机取出一份,保存到自己的余额中
    public void openHongbao(ArrayList<Double> list){
        //创建一个Random
        Random r = new Random();
        //随机生成一个角标
        int index = r.nextInt(list.size());
        //移除出一个金额
        Double money = list.remove(index);
        setLeftMoney(money);
    }
}

定义测试类

package Ground;

import java.util.ArrayList;
import java.util.Scanner;

public class TestHongbao {
    public static void main(String[] args) {
        //创建一个群主对象
        QunZhu qunZhu = new QunZhu("群主",200);
        //创建一个键盘输入
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入金额:");
        int money = scanner.nextInt();
        System.out.println("请输入个数:");
        int count = scanner.nextInt();
        //发红包
        ArrayList<Double> sendlist = qunZhu.send(money,count);
        //判断,如果余额不足
        if(sendlist == null){
            System.out.println("余额不足……");
        }
        //创建三个成员
        Menber m1 = new Menber("成员1",0);
        Menber m2 = new Menber("成员2",0);
        Menber m3 = new Menber("成员3",0);
        //打开红包
        m1.openHongbao(sendlist);
        m2.openHongbao(sendlist);
        m3.openHongbao(sendlist);
        //展示信息
        qunZhu.show();
        m1.show();
        m2.show();
        m3.show();
    }
}

发红包案例二

创建用户类

package Hongbao_2;

public class User_1 {
    private int money;
    private String username;
    public User_1(){

    }
    public User_1(String username,int money){
        this.username = username;
        this.money = money;
    }

    public int getMoney() {
        return money;
    }

    public String getUsername() {
        return username;
    }

    public void setMoney(int money) {
        this.money = money;
    }

    public void setUsername(String username) {
        this.username = username;
    }
    public void show(){
        System.out.println("姓名:" + username + ",余额:" + money);
    }
}

创建群主类

package Hongbao_2;

import java.util.ArrayList;

public class Manger extends User_1{
    public Manger(){
    }
    //继承用户类中的方法
    public Manger(String username,int money){
        super(username,money);
    }
    /*
    *发红包方法:三要素
    *返回值类型:ArrayList<Integer>
    *方法名称:send
    * 参数列表:1。总共多少钱  int totlemoney
    *        2。分成多少粉    int count
    * public ArrayList《integer》 (int totlemoney,int count){
    *  //……
    * }
     */
    public ArrayList<Integer> send (int totlemoney,int count){
        ArrayList<Integer> relist = new ArrayList<>();
        int leftmoney = super.getMoney();//群主当前余额
        if(totlemoney > leftmoney){
            System.out.println("余额不足!");
            return relist;
        }
        //扣钱
        super.setMoney(getMoney()-totlemoney);
        int avg = totlemoney / count;
        int sa = totlemoney % count;//除不尽的零头
        for (int i = 0; i < count - 1; i++) {
            relist.add(avg);
        }
        //最后一个红包
        int as = sa + avg;
        relist.add(as);
        return relist;
    }
}

创建成员类

package Hongbao_2;

import java.util.ArrayList;
import java.util.Random;

public class Menber extends User_1{
    public Menber(){

    }

    public Menber(String username, int money) {
        super(username, money);
    }
    /*
    收红包的三要素
    返回值类型: void
    方法名称: receive
    参数类表: ArrayList《Integer》
    public void receive (ArrayList<Integer>){
    }
     */
    public void receive(ArrayList<Integer> list){
        //从多个红包中抽取一个红包给我自己
        //随机获取一个集合的索引编号
        int index = new Random().nextInt(list.size());
        //从索引当中删除,并把红包给我自己
        int delat = list.remove(index);
        //当前成员本身自己有多少钱
        int money = super.getMoney();
        //加法,并重新自己设置回去
        super.setMoney(delat + money);
    }
}
package Ground;

import java.util.ArrayList;
import java.util.Random;

public class Menber extends User {
    public Menber(){}
    public Menber(String username,double leftMoney){
        super(username,leftMoney);
    }
    //打开红包,就是从集合中随机取出一份,保存到自己的余额中
    public void openHongbao(ArrayList<Double> list){
        //创建一个Random
        Random r = new Random();
        //随机生成一个角标
        int index = r.nextInt(list.size());
        //移除出一个金额
        Double money = list.remove(index);
        setLeftMoney(money);
    }
}

创建测试类

package Hongbao_2;

import java.util.ArrayList;

public class Test_hongbao {
    public static void main(String[] args) {
        //群主
        Manger manger = new Manger("群主",200);
        //成员
        Menber menber1 = new Menber("成员1",0);
        Menber menber2 = new Menber("成员1",0);
        Menber menber3 = new Menber("成员1",0);
        //展示当前的余额
        manger.show();
        menber1.show();
        menber2.show();
        menber3.show();
        System.out.println("========");
        //群主发红包
        ArrayList<Integer> relist = manger.send(100,3);
        //成员收取红包
        menber1.receive(relist);
        menber2.receive(relist);
        menber3.receive(relist);

        manger.show();
        menber1.show();
        menber2.show();
        menber3.show();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值