使用idea编写发红包程序
- 关于使用到的一些知识点
-
- 具体实现
- 代码展示
- 运行结果及分析
关于使用到的一些知识点
1.构造方法
2.类的继承
3.封装
4.构造方法
5.Random类和ArrayList类的使用
具体实现
- 创建一个父类User,包含name和balance两个属性和一个show方法用于展示信息;
- 创建qunzhu类负责发红包使用Arraylist存储每个红包金额;
- 创建member类用于接收红包;
- 创建tset类运行主程序发红包;
代码展示
User类
package com.baidu.Demo01;
//javabean文件
public class User {
private String name;
private double balance;
public void show (){
System.out.println(getName()+"余额"+balance);
}
public User() { }
public User(String name, double balance) {
this.name = name;
this.balance = balance;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
}
qunzhu类
package com.baidu.Demo01;
import java.util.ArrayList;
public class QunZhu extends User {
private ArrayList<Double> doubles = new ArrayList<>();
public ArrayList<Double> getDoubles() {
return doubles;
}
public void SendHongbao(double money, int counter){
//判断钱够不够
if (money>=getBalance()){
System.out.println("钱不够哦");
return;
}
// 获取余额
double balance=getBalance();
balance-=money;
// 更新余额
setBalance(balance);
// 精确到分
money*=100;
int m=(int)(money/counter);
double yu=money %counter;
yu/=100;
for (int i=0;i<counter;i++){
doubles.add(m/100.0);
}
if (yu==0){
doubles.add(m/100.0);
}else{
doubles.add(m/100.0+yu);
}
}
}
member类
package com.baidu.Demo01;
import java.util.ArrayList;
import java.util.Random;
public class Member extends User {
public void shouhongbao(ArrayList<Double> list){
// 获取红包个数
int size =list.size();
Random random = new Random();
// 生成随机红包
int index = random.nextInt(size);
Double money=list.get(index);
// 删除已获取的红包
list.remove(index);
setBalance(getBalance()+money);
}
}
test类
package com.baidu.Demo01;
import java.util.ArrayList;
import java.util.Random;
public class Member extends User {
public void shouhongbao(ArrayList<Double> list){
// 获取红包个数
int size =list.size();
Random random = new Random();
// 生成随机红包
int index = random.nextInt(size);
Double money=list.get(index);
// 删除已获取的红包
list.remove(index);
setBalance(getBalance()+money);
}
}
运行结果及分析
这里程序出现了一些问题多出了一块钱。原因是没有对余数除以一百,类型也转换成double的就行了
修改后qunzhu类后半部代码如下
int m=(int)(money/counter);
double yu=money %counter;
yu/=100;
for (int i=0;i<counter;i++){
doubles.add(m/100.0);
}
if (yu==0){
doubles.add(m/100.0);
}else{
doubles.add(m/100.0+yu);
}