2014-10-12 4 views
-1
public static int guess (int numberOfGuesses, int secretNumber) { 
    Scanner sc = new Scanner(System.in); 

    for(int n = 1; n <= numberOfGuesses; n++){ 
     System.out.println("Guess "+n+" of "+numberOfGuesses+":"); 
     int userNumber = sc.nextInt(); 
     if(userNumber == secretNumber){ 
     return n;  
     } 
     while(userNumber > secretNumber){ 
     System.out.println("The guess is too big"); 
     } 
     while(userNumber < secretNumber){ 
     System.out.println("The guess is too small"); 
     } 
     while(userNumber > 100){ 
     System.out.println("The number "+userNumber+" is not valid. "); 
     } 
    } 
    return -1; 
    } 
} 
+2

이 구문이 유효하지 않습니다. 당신의'if {} return n; else {}' –

+0

리비전 3이 코드를 변경했기 때문에 리버브 2로 돌아 왔습니다 .... – hyde

+0

"이 코드를 수정하는 방법"... 글쎄, 구문 적으로나 논리적으로 건전한 방식으로 다시 쓰는 것이 계획과 비슷하다고 생각합니다. . 이것은 컴파일되지 않으며 필수적으로 닮은 것은 아닙니다. 먼저 튜토리얼을 읽어야합니다. – EpicPandaForce

답변

1

아주 간단합니다. 숫자가 일치 할 때 루프에서 빠져 나갈 필요가 없습니다. 필요한 경우 n을 반환하면됩니다. 루프가 secretNumber없이 발견되면 -1을 반환합니다.

public static int guess (int numberOfGuesses, int secretNumber) { 

    Scanner sc = new Scanner(System.in); 

    for(int n = 1; n <= numberOfGuesses; n++){ 
     System.out.println("Guess "+n+" of "+numberOfGuesses+":"); 
     int userNumber = sc.nextInt(); 

     if(userNumber == secretNumber){ 
      return n;  
     } 
    } 
    return -1; 
} 

동의어는 사용자가 비밀 번호를 추측하는 데 도움이되는 몇 가지 힌트를 사용자에게 제공하면 더 적절합니다.

+0

와우 나는 그것을 믿을 수 없다. 왜 그런지 설명해 주시겠습니까? 나는 언어를 배우려고 노력하고 있습니다. 고맙습니다. – Rawrqqplz

+0

@Rawrqqplz 당신은 무엇을 이해하지 못합니까? 하나의 for 루프를 빠져 나갈 수있다. 하나는 조건이 false가 될 때이다. 2. break를 호출한다. 3. 루프를 포함하고있는 메소드에서 리턴함으로써 (return something;) 호출한다. 루프를 빠져 나와 동시에 n을 반환하기를 원하기 때문에 가장 간단한 방법은'return n; '이다. – Eran

+0

userNumber가 secretNumber 디스플레이보다 높으면 "귀하의 전화 번호가 너무 높습니다"라는 힌트를 어떻게 포함시킬 수 있습니까? 나는 그 방법으로 돌아갈 것이 없기 때문에? 그리고 나는 무엇을 돌려 줄 필요가있을 것이냐? – Rawrqqplz

0

그것을 사용 후 Scanner을 닫습니다 청소기는, 그래서 나는 같은 것을 할 것입니다 :

public static int guess(int numberOfGuesses, int secretNumber) { 
     Scanner sc  = new Scanner(System.in); 
     int userNumber = secretNumber/2; 
     boolean found = false; 
     int tries; 
     for (tries = 0 ; tries <= numberOfGuesses && !found ; tries++) { 
      userNumber = sc.nextInt(); 
      found  = secretNumber == userNumber; 
     } 
     sc.close(); 
     return found ? tries : -1; 
    } 
관련 문제