标题: 基础班学习之发红包案例-2 [打印本页] 作者: yeeo000 时间: 2018-6-12 14:50 标题: 基础班学习之发红包案例-2 哈哈,我来发续集了。
接上次分析中需要实现的发红包案例的具体代码。
1、定义父类:(其实就是个标准的JavaBean)
public class Users {
public Users(String name, int leftMoney) {
this.name = name;
this.leftMoney = leftMoney; }
public Users() { }
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; }
private String name;
private int leftMoney;
public void show(){
System.out.println("用户名:"+name+"账户余额为:"+leftMoney); }}
2、子类Boss,继承父类并有发红包的方法
import java.util.ArrayList;
public class Boss extends Users{
public Boss() { }
public Boss(String name, int leftMoney) {
super(name, leftMoney);}
public ArrayList<Integer> send(int money ,int count){
int money1 = super.getLeftMoney();//super调用父类的方法
ArrayList<Integer> list = new ArrayList<>();
if (money1<money){
System.out.println("余额不足");
}
super.setLeftMoney((super.getLeftMoney()-money));//群主剩下的钱
int x = money/ count;//每份的钱;
int y = money% count+x;//取余,如钱不能按整数均分,单独多的那个红包的金额。
for (int i= 0;i<count-1;i++){
list.add(x);}//count-1个红包的金额是x
list.add(y);//有一个红包的金额是y
return list; }}
3、子类Member,继承Users并有收红包的方法
import java.util.ArrayList;
import java.util.Random;
public class Member extends Users {
public Member() {
}
public Member(String name, int leftMoney) {
super(name, leftMoney);
}
public void get(ArrayList<Integer> list){
//因为可能会有一个红包金额不一样,所以这里用一个随机
Random r = new Random();
int i = r.nextInt(list.size());//bound刚好为0-(size-1),和索引一致
//因为红包每拿走一个需要少掉一个,故用remove;
int j = list.remove(i);
//抢到红包后的钱
int money = super.getLeftMoney()+j;
//将当前余额返回到对象中
super.setLeftMoney(money);
}
4、测试类,有main方法,用于新建对象,并且测试功能是否满足
import java.util.ArrayList;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Boss boss = new Boss("刘备",1000);
Member one = new Member("关羽",10);
Member two = new Member("张飞",20);
Member three = new Member("赵云",100);
boss.show();one.show();two.show();three.show();
Scanner s = new Scanner(System.in);
System.out.println("请输入红包总额:");
int money = s.nextInt();
System.out.println("请输入红包个数:");
int count = s.nextInt();
ArrayList<Integer> list = new ArrayList<>();
list=boss.send(money,count);
boss.show();
one.get(list);two.get(list);three.get(list);
one.show();two.show();three.show();
}
}
5、大功告成,运行程序:
我是刘备,我有1000元钱
我是关羽,我有10元钱
我是张飞,我有20元钱
我是赵云,我有100元钱
请输入红包总额://此处输入500
请输入红包个数://此处输入3
我是刘备,我有500元钱//1000-50
我是关羽,我有176元钱//抢到176-10=166
我是张飞,我有188元钱//抢到188-20=168,抢到了多的那个红包
我是赵云,我有266元钱//抢到266-100=166
6、思考,哈,这个简单的抢红包就完成了。
但是感觉还是有很多实际的内容可以完善,比如:
a、成员数量以及余额,应该也可以通过Scanner进行输入,另外调整发红包的数量等于成员数量等;
b、不等额的随机红包的实现,这个应该就更难了,需要得到一组总额固定的随机数。
c、群主应该也可以抢红包...
哈哈,水的差不多了,现在的我基础班还没上完课程呢,等以后学的多了,应该就可以实现比较复杂的功能。通过码代码实现一个个功能还是挺有成就感的。不过,可能是因为没遇到那些复杂到抓头发的吧,哈哈。Bye~~