一个案例-微信红包java(小项目)
Case 1:均分红包
- 群主发一笔钱,他的余额就会少相应的钱
- 这些钱分成n等份
- n个人抢
- 每个人 的余额相应变多
- 显示余额
相对简单代码省略。有需要请留言。(其实直接在手气红包自己改就可以)
Case 2:手气红包
- 群主发一笔钱,他的余额就会少相应的钱
- 这些钱不等的分成n等份
- n个人抢
- 每个人 的余额相应变多
- 显示余额
ps:这个部分的算法用的是知乎老哥的算法
主程序:
package hongbao;
import java.sql.SQLOutput;
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class maain {
public static void main(String[] args) {
Faqianren fa = new Faqianren(100);
Shouqian sh = new Shouqian(100);
System.out.println("输入你要发的金额:");
double mon = (float) new Scanner(System.in).nextFloat();
System.out.println("输入要发几个人:");
int pepole = new Scanner(System.in).nextInt();
Random r = new Random();
double sum = 0;
int remainp = 0;
double max =0.0;
double remianq = mon;
double he =0.0;
// float avmon = mon/7;//平均分配
double[] list = new double[pepole];
for (int i = 0; i < pepole-1; i++) {
remainp = pepole-i;
max= remianq /remainp *2;
double re = r.nextDouble();
list[i] = re * max+0.01;
sum = sum + list[i];
remianq = mon -sum;
}
list[pepole-1] = mon - sum;
if (mon >= 0) {
fa.zhichu(mon);
if (fa.bz) {
System.out.println("群主发了:" + mon);
System.out.println("群主还剩下 " + fa.getYu() + " RMB");
for (int i = 0; i < pepole; i++) {
if (list[i] >= 0) {
// fa.zhichu(mon);
if (fa.bz) {
// System.out.println("send:" + mon);
// System.out.println("群主还剩下 " + fa.getYu() + " RMB");
sh.shouru(list[i]);
System.out.println(i+" 号抢到:" + list[i]+"元");
// System.out.println(i + " 号还剩下 " + sh.getYu() + " RMB");
}
} else {
System.out.println("????????");
}
}
for (int i = 0; i < list.length; i++) {
he = he + list[i];
}
System.out.println("运气王收到了:"+MAX(list));
System.out.println("所有的人收到的钱总和为:"+he);
}
} else {
System.out.println("????????");
}
}
public static double MAX(double[] arr) {
Arrays.sort(arr);
return arr[arr.length-1];
}
}
下面是各个类:
1.发钱人(faqianren)
package hongbao;
public class Faqianren extends Zhifubao {
public Faqianren(double yu) {
super(yu);
}
}
2.收钱人(shouqianren)
package hongbao;
public class Shouqian extends Zhifubao{
public Shouqian(double yu) {
super(yu);
}
}
3.支付宝(zhifubao)
package hongbao;
public class Zhifubao {
private double yu;
boolean bz;
public Zhifubao() {
}
public Zhifubao(double yu) {
this.yu = yu;
}
public void zhichu(double send){
if (this.yu>=send&&send>=0){
this.yu = this.yu-send;
this.bz = true;
}else {
System.out.println("余额不足");
this.bz = false;
}
}
public void shouru(double geet){
if (geet>0){
this.yu = this.yu +geet;
}else {
System.out.println("疯了?");
}
}
public double getYu() {
return yu;
}
}
一个小case,和我看的视频教程上老师写的不太一样,老师的思路很简单清晰,我写复杂了,不过是自己写的哈哈。
好几天没学了,忙着写论文,今天写个小case,11.17!