A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

圆子粥

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

  之前我是从未接触过计算机的小白,完全小白,什么都不懂。来学Java其实也是随便挑的,没考虑那么多。下面发的内容是课上老师举的一个例子,关于发红包的,我就简单分享一下自己学习过程中的想法。
//首先写一个父类”hongbao”,属性是得知道名字以及钱包余额。这个比较简单,标准的java bean,按”Alt+Ins”,IJ编译器自动能生成,最后面是加了一个show方法,为了后面的测试类方法作为检查。
package hongbao;

public class User {
    private String name;
    private int leftMoney;

    public User() {
    }
    public User(String name, int leftMoney) {
        this.name = name;
        this.leftMoney = leftMoney;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getLeftMoney() {
        return leftMoney;
    }
    public void setLeftMoney(int leftMoney) {
        this.leftMoney = leftMoney;
    }
    public void show(){
        System.out.println("我叫:"+name+",我钱包里有"+leftMoney);
    }
}
//接下去是创建了一个发红包的人的类,我这里称之为“Fa”(看到这个Fa就很想笑,哈哈哈哈哈哈哈哈哈哈……好了笑完了),同样”Alt+Ins”,生成无参和全参的构造方法,整体思路差不多是:发红包的人需要知道两个参数,就是他想发多少钱,分成多少个红包发出去;然后得给他返回一个集合,里面装的是已经分好的多少个红包,每个红包各自是多少钱。 这样的话就已经知道方法该如何写了:返回值是一个集合,方法名我直接用的是红包”redPacket”,参数发多少钱”totalMoney”,多少个红包个数”geShu”。那怎么分红包,这个案例比较简单,就是平均分,如果不能整除的话,就会有多余的钱,那么就会有一个人多拿这余出来的钱。最后发红包的人自己的钱包余额就得减去他发出去的钱。
package hongbao;
import java.util.ArrayList;                                        //这两个是导包
import java.util.Random;

public class Fa extends User{
    public Fa() {
    }
    public Fa(String name, int leftMoney) {
        super(name, leftMoney);
    }
    public ArrayList<Integer> redPacket(int totalMoney,int geShu){
        if(totalMoney > getLeftMoney()){                                                //这里要考虑到一
            System.out.println("余额不足你发个锤子?");        个问题,假如发红
        }                                                                                                        包的人想要发的钱
        ArrayList<Integer> packet = new ArrayList<>();                        比自己原本钱包余
        int avr = totalMoney / geShu;                                额还要多,那根本不够发,
        int duo = totalMoney % geShu;                        所以需要用到if语句,钱够了,
        for (int i = 0; i < geShu-1; i++) {                        才能继续执行接下去的步骤。
            packet.add(avr);
        }
        int last = avr + duo;
        packet.add(last);
        setLeftMoney(getLeftMoney()-totalMoney);
        return packet;
    }
}
//然后是创建一个收红包的人的类,按照我前面定义“Fa”的套路,我这里定义的是“Shou”,继续”Alt+Ins”,生成无参和全参的构造方法,这里的思路是:收红包的人面前出现几个不知道里面多少钱的红包,他只管从里面随机抽一个,然后加到自己原本的钱包余额里面去。那么他收到的参数就是一个集合(从“Fa”类的”redPacket”方法得到的),而且不需要返回值。
package hongbao;
import java.util.ArrayList;
import java.util.Random;

public class Shou extends User{
    public Shou() {
    }
    public Shou(String name, int leftMoney) {
        super(name, leftMoney);
    }

    public void receive (ArrayList<Integer> redPacket){
        Random r = new Random();
        int index = r.nextInt(redPacket.size());
        setLeftMoney(getLeftMoney()+redPacket.remove(index));
    }
}
//最后是测试方法,调用了两次show方法,展示了大家各自发红包收红包前后的余额。
package hongbao;
import java.util.ArrayList;

public class Test {
    public static void main(String[] args) {
        Fa fa = new Fa("Pony",888);
        Shou b = new Shou("Mundo",0);
        Shou c = new Shou("老铁",0);
        Shou d = new Shou("小胖",0);
        Shou e = new Shou("大黄",0);

        fa.show();
        b.show();
        c.show();
        d.show();
        e.show();
        System.out.println("==============");

        ArrayList<Integer> list = new ArrayList<>();        //这里需要创建一个新的集
        list = fa.redPacket(666,4);                                   合,来接收“Fa”类里面
                                                                                        “redPacket”返回的数据。
        b.receive(list);
        c.receive(list);
        d.receive(list);
        e.receive(list);

        fa.show();
        b.show();
        c.show();
        d.show();
        e.show();
    }
}

1 个回复

倒序浏览
给你点个赞
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马