2014-12-09 2 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);

이클립스에서 무엇입니까 오류 메시지가

입니다

그렇지 않으면 클래스 끝에 대신 printGrid을 직접 호출하려고하면 이러한 전역 적으로 정의 된 변수 각각을 변수로 확인할 수 없다는 메시지가 나타납니다. 이것을 공용 클래스로 만드는 것은 아무런 효과가 없습니다. 비슷한 대답을 StackOverflow에서 본 후에도 나는 아직도 우둔합니다.

+0

어떻게'xWins'를 호출합니까? – Maroun

+4

오류 메시지는 호출 할 때 메소드가 * 두 * 부울 인수를받을 것으로 예상하지만 사용자에게 하나만주고 있다고 알려줍니다. Java에서 메서드 인수는 선택 사항이 아니므로 서명에 필요하다면 반드시 제공해야합니다. – JonK

+1

왜 스위치 케이스를 사용합니까? 간단한 if/else 문이 훨씬 쉬울 것입니다. 또한 String.equalsIgnoreCase()를 살펴보십시오. 모든 case 문을 'if (playerChoice.equalsIgnoreCase ("n") || playerChocie.equalsIgnoreCase ("no")) {...}'와 같은 하나의 명령문으로 대체 할 수 있습니다. 'turn = true' 및'newGame = true' 문은 else 블록에 들어갑니다. – DerStrom8

답변

0

xWins 메소드는 두 개의 부울 매개 변수를 찾고 있습니다. 당신은 우리가 어떻게 그 메소드를 호출 하는지를 보여주지는 않지만, 에러로 인해 여러분은 단지 하나의 불리언 값을 전달하려고 시도하는 것이 명백합니다. 그 이름의 메소드는 하나의 매개 변수 만 받아 들일 수 없으므로 계속할 수 없습니다. 매개 변수로 두 개의 부울을 찾는 메소드는 하나만 전달하려고하면 작동하지 않습니다.

+0

이것은 모든 것에 대한 링크입니다 (새 게임을 시작할 때 printGrid가 호출되지 않음). https://gist.github.com/SarahJessica/e75facaf5637b6c7fe2b TBH를 살펴 보는 것이 좋습니다. :/ –

+0

라인 84와 91을보세요 - 당신은 하나의 불린만을 전달하고 있습니다. 또한 "newGame"변수를 전달해야합니다. 그 중 하나 또는 메소드 선언에서 두 번째 부울 매개 변수를 제거하지만 xWins() 내에서 "newGame"을 사용하지 않으려는 경우에만 작동합니다 – DerStrom8

+0

내가보기에 "newGame"을 메서드에 전달할 필요가 없습니다 , 그래서 선언에서 꺼내서'private static void xWins (boolean turn) {...} '만 사용하십시오. – DerStrom8

관련 문제