Java-發紅包例項-繼承練習

ksh123發表於2020-07-10

案例:

在這裡插入圖片描述

案例圖解:

劃分為三個類,一個父類把金額和姓名都放在父類裡。然後在新建兩個類,分別是群主類和普通成員類。群主類有發紅包的方法,普通成員類裡有收紅包的方法。也就是隻有群主才可以發紅包,普通成員只能收紅包。

程式碼實現:

父類

package cn.itcast.day09.demo14;

public class User {
    private String name;//姓名
    private int money;//餘額

    public User() {
    }

    public User(String name, int money) {
        this.name = name;
        this.money = money;
    }
    //顯示餘額
    public void show(){
       System.out.println("我叫"+name+",我有多少錢;"+money);
    }
    public String getName() {
        return name;
    }

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

    public int getMoney() {
        return money;
    }

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

群主類:

 package cn.itcast.day09.demo14;

import cn.itcast.day09.demo04.Arraylis;

import java.util.ArrayList;

public class Manager extends User {
    public  Manager(){

    }
    public Manager(String name, int money) {
        super(name, money);
    }
    //發紅包方法
    public ArrayList<Integer> send(int totalMoney,int count){
        //首先需要一個集合,用來儲存若干個紅包金額
        ArrayList<Integer> redList=new ArrayList<>();

        //首先看下群主自己有多少錢
        int LeftMoney=super.getMoney();//獲取群主當前餘額
        //判斷群主餘額是否充足
        if(totalMoney>LeftMoney){
            System.out.println("餘額不足");
            return redList;//返回空集合
        }

        //扣錢,更新餘額。
        //公式:最新餘額=上次餘額-發的錢
        super.setMoney(LeftMoney-totalMoney);
        //發紅包需要平均拆分成為count份
        int avg=totalMoney/count;
        int mod=totalMoney %count;//餘數,也就是零頭

        //下面把紅包一個一個放到集合當中
        for (int i = 0; i < count-1; i++) {
            redList.add(avg);
            //除不開的零頭,抱在最後一個紅包當中
            /*if(i==count-1){
                redList.add(avg+mod);
            }*/
        }
        int last=(avg+mod);
        //除不開的零頭,抱在最後一個紅包當中
        redList.add(last);
        return  redList;
    }
}

普通成員類:

 package cn.itcast.day09.demo14;

import java.util.ArrayList;
import java.util.Random;
//普通成員
public class Member extends User{
    public Member() {
    }

    public Member(String name, int money) {
        super(name, money);
    }
    //收紅包的方法
    public void recive(ArrayList<Integer> list){
        //從多個紅包當中隨便抽取一個,給自己
        //隨機獲取一個list集合當中的隨機編號
        int index=new Random().nextInt(list.size());
        //根據索引,從集合當中刪除,並且得到被刪除的紅包給自己。
        int delta=list.remove(index);
        //當前成員本來有多少錢
        int money=super.getMoney();
        //從新設定餘額
        super.setMoney(money+delta);
    }
}

客戶端:

 package cn.itcast.day09.demo14;

import java.util.ArrayList;

public class MainRedPacket {
    public static void main(String[] args) {
        Manager manager=new Manager("群主",100);
        Member one=new Member("成員A",0);
        Member two=new Member("成員B",0);
        Member three=new Member("成員C",0);
        manager.show();
        one.show();
        two.show();
        three.show();
        System.out.println("=================================");
        ArrayList<Integer> redList=manager.send(20,3);
        //三個普通成員收紅包
        one.recive(redList);
        two.recive(redList);
        three.recive(redList);
        //群主最新餘額
        manager.show();
        //成員最新餘額
        one.show();
        two.show();
        three.show();
    }
}

結果

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章