错误由双精度字符串转换为bukit 1.13

时间:2018-11-03 15:14:48

标签: minecraft bukkit

我想让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;       

预先感谢

1 个答案:

答案 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用作颜色符号,因为这可能会导致以后出现问题