2014-11-14 1 views
-1

추측 프로그램이 있고 카운터를 추가하려고합니다. 굵게 표시된 부분에는 카운터가 있습니다. 추측을 잘못하면 카운터에 1이 추가됩니다. 그러나 인쇄 할 때 아무거나 상관없이 0으로 인쇄됩니다.카운터를 0으로 설정 한 다음 메서드를 사용하여 카운터를 추가하면 0이 유지됩니다.

    public static void firstGame(String Answer, String userGuess, int counter) 
       { 
        userInput = new Scanner(System.in); 

        boolean playgame = true; 

        while(playgame == true) 
        { 
        Answer = "Sam"; 

        lnPrint(" "); 
        lnPrint("Take a guess at my name! It starts with an S..."); 
        sPrint(":"); 
        userGuess = userInput.next(); 

        if(userGuess.equalsIgnoreCase(Answer)) 
         { 
          lnPrint("You got it! Its " + Answer); 
          lnPrint(" "); 
          break; 
         } 

        else if(userGuess != Answer) 
         { 
          lnPrint("Good guess, keep trying!"); 
          counter++; 
         } 

        } 
       } 

저의 카운터 게임 방식입니다.

public static void main(String[] args) 
    { 
     Scanner userInput = new Scanner(System.in); 

     int Start, counter = 0; 
     String Answer, userGuess, middleAnswer, middleUserGuess; 
     Answer = null; 
     userGuess = null; 
     middleAnswer = null; 
     middleUserGuess = null; 
     Start = 0; 

      while(Start !=2) 
      { 

      lnPrint("(1) Start Game"); 
      lnPrint("(2) Exit"); 
      sPrint(":"); 
      Start = userInput.nextInt(); 

       if(Start == 1) 
        { 
         firstGame(userGuess, Answer, counter); 
         lnPrint("Now, how about my middle name?"); 
         nlnPrint(counter); 
         middleGame(middleAnswer, middleUserGuess); 

        } 

이것은

답변

-1

가 이전에 "카운터"초기화 적이 출력 코드는? Heres는 작동 예 :

$.Guess = function() { 
    var parent = this; 
    var counter = 0; 

    this.guess = function(val) { 
     if (val != 5) { 
      parent.guessedWrong(); 
     } 
    } 
    this.guessedWrong = function() { 
     counter++; 
    } 
    this.guessed = function() { 
     return counter; 
    } 
    this.resetCounter = function() { 
     counter = 0; 
    } 
} 


var game = new $.Guess(); 
game.guess(1); 
game.guess(2); 
alert(game.guessed()); 

game.guess(3); 
game.guess(4); 
game.guess(5); 
// Alerts 4, because there is 5 guesses and one of them (the one with value 5) is correct 
alert(game.guessed()); 
// Reset counter to 0 
game.resetCounter(); 

game.guess(6); 
game.guess(7); 
game.guess(8); 
alert(game.guessed()); 

여기서 상기 테스트 할 수 용맹 한 코드 : http://jsfiddle.net/jcpjr9dc/

+0

메인 메서드에서 카운터를 시작했습니다. 그리고 당신의 코드가 무엇을 의미하는지 확신 할 수 없습니다. 모든 것을 변경하지 않고 코드에서 사용할 수있는 방법이 있습니까? –

+0

코드에 대한 관심이 높아졌기 때문에 Java와 비슷하게 보입니까? 나의 나쁜, 나는 그것을 일찌기주의하지 않으며, 그것의 빠른 일별을 가지고 가고 javascript 이었다는 것을 생각했다. 그러나 나는 여전히 내가 사용하는 언어가 무엇이든 상관없이 나의 예가 유효하다고 생각한다. – Kirbo

+0

예, Java입니다. 하지만 그 코드는 뭔가를 찾고 있습니다. 나는 왜 카운터 ++인지 알 필요가있다. 메서드에서 주요 메서드를 작동하지 않습니다. 나는 그것을 main 메소드에서도 0으로 초기화했다. –

0

이 값/기준 문제 공통 패스 같다. firstGame위한 인수로 counter 사용시 counter변수에 대한 참조를 전달 반대로, 그것의 firstGame 방법에 사용되는 counter이다; 여기에 대해서는 여기에서 읽을 수 있습니다 : http://www.javacoffeebreak.com/faq/faq0066.html

메서드를 참조하여 정수를 전달하는 방법이 있지만 (Java : Best way to pass int by reference 참조)이 경우에는 counter을 전역 변수로 간단히 선언해야한다고 생각합니다.

+0

나는 그것을 글로벌, 지금은 내게주는 노력 "매개 변수 카운터에 대한 잘못된 수식어이며 final 만 허용됩니다."라는 오류가 발생했습니다. 전역 메서드를 기본 메서드 안에 넣습니다. –

+0

신경 쓰지 마세요. 고맙습니다 –

관련 문제