2014-10-09 3 views
2

안녕 얘들 아 나는 처음 프로그래밍 언어로 Java를 배우기 시작했습니다! 우리는 while과 for 루프를 사용하여 기본적인 행맨 게임을 만들도록 지정되었습니다.기본 Java 교수형 집행자

내가 가진 무엇

지금까지

사용자가 입력 첫 번째가 인식 않습니다 같아요 그/그녀가 수정되었습니다 추측하지만, 그냥 내가 잘못된 편지를 짐작한다는에 계속 문자가!

도움을 받으실 수 있습니다. 내 질문에 내 코드에서 내가 뭘 잘못하고 있니? 나는 그의 추측이 옳은지 잘못된지를 사용자에게 알려주는 프로그램이 필요하다.

내 코드 :

이것은 내가 지금까지 여기에있을 것입니다
import cs1.Keyboard; 

public class Hangman { 
    public static void main(String args[]) { 
     int guessCount = 0; 
     int correctGuess = 0; 
     boolean foundIt; 
     boolean solved; 
     char guess, answer; 
     String word; 

     System.out.println("Welcome to HangMan!"); 
     System.out.println("Please enter a word for the opponent to guess!"); 
     word = Keyboard.readString(); 
     while (guessCount <= 6) { 
      System.out.println("Please enter any letter A-Z as your guess!"); 
      guess = Keyboard.readChar(); 
      for (int i = 0; i < word.length(); i++) { 
       if (guess == word.charAt(i)) { 
        System.out.println("You have guessed a correct letter!"); 
        correctGuess++; 
        System.out.println("Correct Guess Count: " 
             + correctGuess); 
        solved = false; 
       } 
       else if (guess != word.charAt(i)) { 
        System.out.println("Sorry! That is an incorrect guess! " 
             + "Please try again!"); 
        guessCount++; 
        System.out.println("Guess Count: " + guessCount); 
        solved = false; 
       } 
      } 
      if (correctGuess == word.length()) { 
       solved = true; 
       System.out.println("Congratulations! " + 
            "You have guessed the word!"); 
      }     
     } 
    } 
} 

당신은 사용자 입력하면 루프를 업데이트 할 응답을 완료 할 때마다 요청해야 출력

Welcome to HangMan! 
Please enter a word for the opponent to guess! 
hello 
Please enter any letter A-Z as your guess! 
l 
Sorry! That is an incorrect guess! Please try again! 
Guess Count: 1 
Sorry! That is an incorrect guess! Please try again! 
Guess Count: 2 
You have guessed a correct letter! 
Correct Guess Count: 1 
You have guessed a correct letter! 
Correct Guess Count: 2 
Sorry! That is an incorrect guess! Please try again! 
Guess Count: 3 
Please enter any letter A-Z as your guess! 
+1

네, 질문은 무엇입니까? –

+0

내 질문에 내 코드에서 내가 뭘 잘못하고 있니? 그의 추측이 옳은지 나쁜지 모두 사용자에게 알려주는 프로그램이 필요합니다. 나는 정확하게 그것을 사용하고 있는지 확인하기 위해 charAt에 대한 연구를 수행했다. 나는 –

답변

3

String의 모든 문자와 guess을 비교 한 다음 모든 문자에 대해 메시지를 표시합니다. 대신 입력과 일치하는 문자의 수를 반환하는 메서드를 작성해야합니다.이 메서드는 문자가 반복 된 단어도 처리합니다. 그래서,

private static int countOf(String in, char ch) { int count = 0; for (char c : in.toCharArray()) { if (c == ch) { count++; } } return count; } 

그런 다음 당신은 당신의 천국 '이후, 당신이 사용할 수있는 두 번째 방법없이

guess = Keyboard.readChar(); 
int count = 0; 
for (char c : in.toCharArray()) { 
    if (c == guess) { 
     count++; 
    } 
} 
if (count > 0) { 
    System.out.println("You have guessed a correct letter!"); 
    correctGuess += count; 
} else { 
    System.out.println("Sorry! That is an inncorrect guess! Please try again!"); 
} 
guessCount++; 

그것을 위해

guess = Keyboard.readChar(); 
int count = countOf(word, guess); 
if (count > 0) { 
    System.out.println("You have guessed a correct letter!"); 
    correctGuess += count; 
} else { 
    System.out.println("Sorry! That is an inncorrect guess! Please try again!"); 
} 
guessCount++; 

편집, 같은 그것을 호출 할 수 있습니다 사용 된 for-each -

char[] chars = in.toCharArray(); 
for (int i = 0; i < chars.length; i++) { 
    if (chars[i] == guess) { 
     count++; 
    } 
} 
+0

완전히 새로운 방법을 만든 부분을 배웠습니다. 전에는 결코 사용 해본 적이없는 for 루프와 다른 것 같습니다. 나는 그것을 통합하고 배우려고 노력할 것이다! 감사! –

+0

완전히 새로운 방법이 필요하지 않습니다. 루프 내부에 포함 된 루프를 사용하여이 작업을 수행 할 수 있어야합니다. 입력 된 문자와 단어의 몇 문자가 일치해야하는지 계산해야하며, 일치하지 않으면 "잘못된 추측"메시지를 인쇄하십시오. –

+0

달콤한! 방금 toCharArray를 보았는데 매우 유용하고 훨씬 더 이해가됩니다! 지금은 문제가 안된다. ch는 변수로 해결할 수 없다. 방금 추가 한 내용이나 메신저가 누락 된 경우 확실하지 않은 경우 :/ –

-1

입니다.

루프 내에서 변수 추측이 업데이트되지 않았기 때문에 루프가 무한 루프로 실행됩니다. 루프 내에서 추측 변수도 업데이트했습니다.

+0

이라고 생각한다. 편집 : 가장 간단한 방법은 전체 단어가 맞을 때까지 반복적으로 사용자 입력을 요청하는 것이다. –

+0

그래서 더 많은 루프가 필요합니까? –