Ошибка двойного до строки и обратно в Букит 1.13 - PullRequest
0 голосов
/ 03 ноября 2018

я хочу позволить игроку в bukkit minecraft 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 голосов
/ 05 ноября 2018

Просматривая ваш код, я считаю, что вы попросили пользователя ввести дробную, а не десятичную дробь. Однако дробь должна быть преобразована в десятичную, прежде чем вы сможете проверить это.

Самый простой способ сделать это, я думаю, будет выглядеть так:

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, но вы можете сравнить его с ответом на вопрос.

Также, но смущен тем, что вы возвращаете ложное в конце вместо истинного.

Edit: Используйте ChatColor.COLOR_CHAR для цветного символа, так как это может вызвать проблемы в дальнейшем

...