2013-02-18 68 views
0

好的,我正在玩游戏的最后部分,然后我会邀请你们一起玩。它并不完美,但它是我Java进步中的一个巨大里程碑。 因此,在我的代码中,我打电话给我的拼图课,以验证解谜课程中提供的私人变量解决方案的用户equalsIgnoreCase提供的解决方案。如果它们匹配,则返回true,否则返回false。在测试仪上,如果我得到返回的真值,它应该打印我是正确的,如果它返回false我错了。 问题是我输入的是正确的,但它告诉我我错了。为什么?如何传递布尔值并在if语句中验证boolean?

谜:

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

     } 

    } 

} 

puzzletester:

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"); 
     } 
     } 


     } 
+0

请发布相关的代码,你面临的问题。 – PermGenError 2013-02-18 22:41:39

+0

你想用'solution.equalsIgnoreCase(解决方案)'语句做什么?''guessLetter'? – 2013-02-18 22:43:15

+0

请注意:您的solvePuzzle方法可以写成:'return this.solution.equalsIgnoreCase(solution);'。这个测试:'if(game.solvePuzzle(solution)== true)'可以写成if(game.solvePuzzle(solution))'。布尔表达式的布尔类型已经是。无需将布尔值与true进行比较以获取布尔值。 – 2013-02-18 22:47:26

回答

1

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

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

+0

将next()更改为nextLine()。 金星先生!谢谢您的帮助。 – SkyVar 2013-02-18 23:11:07

0

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

BufferedReader br = new BufferedReader(new InputStreamReader(System.in))