之前我是从未接触过计算机的小白,完全小白,什么都不懂。来学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();
}
}
|
|