0

好的,我的游戏进入了最后一部分,然后我会邀请大家一起玩。它绝不是完美的,但它是我 Java 进步的一个巨大里程碑。所以在我的代码中,我调用我的拼图类来验证用户给出的解决方案是否是equalsIgnoreCase拼图类中提供的私有变量解决方案。如果它们匹配,则返回 true,否则返回 false。在测试仪上,如果我得到返回的真值,它应该打印出我是对的,如果它返回假我就错了。问题是我输入正确,但它告诉我我错了。为什么?

谜:

    public boolean solvePuzzle(String answer)
    {
        if(this.solution.equalsIgnoreCase(answer))
        {
            return true;
        }
        else
        {
            return false;

        }

    }

}

谜题测试者:

    if(choice==2)
   {
        System.out.println("Please solve the puzzle");
        input.nextLine();
        String answer=input.next();
        answer=answer.toUpperCase();
        game.solvePuzzle(answer);

        if(game.solvePuzzle(answer)==true)
        {
        System.out.println("That is correct");
        }
        else
        {
        System.out.println("You are wrong");
        }
        }


        }
4

2 回答 2

1

好的。解决方案提示:仔细阅读 Scanner 类的 javadoc,尤其是解释默认分隔符是什么的部分,以及该next()方法的文档。现在看看解决方案是什么,并问问自己它是否与默认分隔符有关。

要确认,请选择另一个解决方案,看看它是否改变了某些东西。还打印您比较的变量的值以查看它们实际包含的内容,或学习使用 Eclipse 调试器。这并不难,而且我确信 Eclipse 有一个关于它的帮助页面。

于 2013-02-18T23:02:43.143 回答
0

您的问题实际上只是使用扫描仪,默认情况下使用空格分隔。您需要调用 useDelimiter() 方法来正确设置它。您可以使用 BufferedReader:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in))
于 2013-02-18T23:08:59.433 回答