基于java的简单英雄联盟胜率计算
首先声明,楼主是一个LOLer,技术还说的过去。今天下午楼主的同学看到楼主匹配胜率感人,非说楼主是“小学生”,非说匹配胜率要50%以上才算不坑,55%以上才能有carry作用。所以楼主想算算再赢多少盘能算不坑,于是就做了个算法。下图是楼主的胜率和程序的运行结果。
楼主胜率感人,想成为不坑的人有些难啊,下面是代码实现。
主函数
package 胜率; import java.util.Scanner; /** * * @author Sakuragi * */ public class Demo { private static Scanner sc; public static void main(String[] args) { int all;// 总场次 int win;// 胜利场次 sc = new Scanner(System.in); System.out.println("输入总场次"); all = sc.nextInt(); System.out.println("输入获胜场次"); win = sc.nextInt(); new Pencent(win, all); System.out.println("输入您想要的胜率,如: 50%"); String pec = sc.next(); new Pencent(win, all, pec); } }
胜率计算函数
package 胜率; import java.text.NumberFormat; /** * * @author Sakuragi * */ public class Pencent { Pencent() { }; public Pencent(int win, int all) { // 创建一个数值格式化对象 NumberFormat numberFormat = NumberFormat.getInstance(); // 设置精确到小数点后2位 numberFormat.setMaximumFractionDigits(2); String result = numberFormat.format((float) win / (float) all * 100); System.out.println("您当前的胜率为:" + result + "%"); } public Pencent(int win, int all, String pec) { // 创建一个数值格式化对象 NumberFormat numberFormat = NumberFormat.getInstance(); // 设置精确到小数点后2位 numberFormat.setMaximumFractionDigits(2); /** * pec2:去掉%的胜率 强制转换为float类型便于计算。 */ float pec2 = (float) (Float.parseFloat(pec.substring(0, pec.length() - 1)) * 0.01); // result为需要获胜的盘数 String result = numberFormat.format(((float) win - (float) all * pec2) / (pec2 - 1)); System.out.println("您需要胜利" + result + "次"); System.out.println("您的胜率才为" + pec); System.out.println("您的总场次将为:" + (all + Integer.parseInt(result)) + "您的胜利场次为" + (win + Integer.parseInt(result))); }; }
总结:
1.楼主注释写的很详细了,算法也很简单,注意类型转换。
2.了解NumberFormat和parseInt和parseFloat的用法。
3.楼主不是“小学生”,胜率低原因很多,自行脑补。