我想让Bukkit《我的世界》 1.13中的玩家求解x的方程, 我写了一个发电机,它的工作正常。但是有分数可以作为答案,所以我想我可以得到玩家的答案,检查其分数是否为分数,将其转换为双精度,返回字符串,并查看十进制分数是否等于解决方案:
if(cmd.getName().equalsIgnoreCase("math")) {
Player p = (Player) sender;
if(mathPlayer.contains(p.getName())) {
String eing = args[0];
String eing2 = "";
String eingf = "";
double vergl = 0.0;
if(eing.contains("/")) {
eing2 = eing.replace(",", ".");
vergl = Double.parseDouble(eing2);
eingf = Double.toString(vergl).replace(".", ",");
} else {
eingf = eing;
}
int in = mathPlayer.indexOf(p.getName());
String ergeb = mathAnswer.get(in);
if(ergeb.contains(eingf)) {
World w = p.getWorld();
w.playSound(p.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 10, 1);
p.sendMessage("§8[§cMATH§8] §aCongratulations!");
} else {
p.sendMessage("§8[§cMATH§8] §7Wrong: Solution: " + ergeb);
}
mathPlayer.remove(in);
mathAnswer.remove(in);
} else {
String equation = genequation(p);
sender.sendMessage("§8[§cMATH§8] §7Solve for x: §a" + equation);
p.sendMessage("§8[§cMATH§8] §7Enter answer with /math <answer>!");
}
return false;
预先感谢
答案 0 :(得分:0)
仔细检查您的代码,我相信您已要求用户输入一个分数而不是一个小数。但是,必须先将小数转换为小数。
我认为最简单的方法如下:
double partA = Double.parseDouble(args[0].substring(0, args[0].indexOf("/")));
double partB = Double.parseDouble(args[0].substring(args[0].indexOf("/") + 1))
double answer = partA / partB
这是近似值,并在ipad上键入,但您可以将其与问题的答案进行比较。
此外,但由于为什么最后返回false而不是true感到困惑。
编辑: 将ChatColor.COLOR_CHAR用作颜色符号,因为这可能会导致以后出现问题