2014-12-09 67 views
0

我对Java很新,我正在制作一个在控制台中运行的小游戏。 如果有人想再次玩,我需要调用这个方法。Java无法解析为变量或不适用于参数(布尔值)

printGrid(A1, A2, A3, B1, B2, B3, C1, C2, C3); 

我在下面想这(其中转和newGame被声明为全局变量:

private static void xWins(boolean turn, boolean newGame) { 
    String playerChoice; 
    System.out.println("Player X Wins!"); 
    System.out.println("|Would you like to play again? |"); 
    System.out.println("|Enter Y or N     |"); 
     playerChoice = enterChoice(turn); 
      switch(playerChoice){ 
      case "n": thankYou();break; 
      case "N": thankYou();break; 
      case "no": thankYou(); break; 
      case "No": thankYou();break; 
      case "NO": thankYou();break; 
      case "nO": thankYou();break; 
      default: turn = true; newGame = true; 
      } 
} 

我试图使它与该主循环工作,这去与这个

if (newGame == true) printGrid(A1, A2, A3, B1, B2, B3, C1, C2, C3);

我在Eclipse中收到错误消息是

The method xWins(boolean, boolean) in the type ticTacToe is not applicable for the arguments (boolean) 

否则,如果我尝试调用printGrid,而不是直接newGame = true;在课程结束然后我得到的消息告诉我这些的全局变量不能被解析为一个变量。让这个公开课也没有什么区别。在StackOverflow上查看类似的答案后,我仍然无能为力。

+0

你是怎么称呼'xWins'的? – Maroun 2014-12-09 13:36:33

+4

错误消息告诉你,当你调用它时,你的方法期望接收*两个*布尔参数,但你只给它一个。在Java中,方法参数不是可选的,如果你的签名需要它,你必须提供它。 – JonK 2014-12-09 13:38:09

+1

你为什么使用开关盒?简单的if/else语句会更容易。也看看String.equalsIgnoreCase()。你可以用一个陈述来替换所有的case语句,说明if(playerChoice.equalsIgnoreCase(“n”)|| playerChocie.equalsIgnoreCase(“no”)){...}。 'turn = true'和'newGame = true'语句将会进入else块 – DerStrom8 2014-12-09 13:41:13

回答

0

xWins方法正在寻找两个布尔参数。您不会告诉我们您是如何调用该方法的,但是由于错误,显然您只是试图将它传递给一个布尔值。由于该名称的方法不存在只接受一个参数,它不能继续 - 你创建的方法是寻找两个布尔参数不会工作,如果你只是试图通过它。

+0

这是一个链接到整个事情(没有在新游戏开始时调用printGrid): https://gist.github.com/SarahJessica/e75facaf5637b6c7fe2b 通过TBH浏览是很多东西。 :/ – 2014-12-09 13:52:54

+0

看看第84和91行 - 你只传递一个布尔值。你也应该把它传递给你的“newGame”变量。或者从方法声明中删除第二个布尔参数,但只有当你不打算在xWins()内使用“newGame”时才有效() – DerStrom8 2014-12-09 13:55:59

+0

从我看到的你不需要将“newGame”传入方法,所以我会把它从声明中拿出来,只使用'private static void xWins(boolean turn){...}' – DerStrom8 2014-12-09 14:03:16