2014-01-27 10 views
0

교수형 집행 프로그램을위한 프로그램이 있는데 indexof가 작동하지 않습니까? 그것의 온라인 30. 나는 그것을 알아 내려고 노력했지만 나는 cannot.if (guessedWord.indexOf (letter)> = 0). 나는 String이 예상되는 경우 당신은 char에 전달하는 잘못된왜 indexof가 작동하지 않습니까?

import java.io.PrintStream; 
import java.util.Scanner; 

public class Hangman 
{ 
public static void main(String[] args) 
{ 
String[] words = { "write", "program", "that", "receive", "positive" }; 

Scanner input = new Scanner(System.in); 
char anotherGame; 
do 
{ 
int index = (int)(Math.random() * words.length); 

String hiddenWord = words[index]; 
StringBuilder guessedWord = new StringBuilder(); 

for (int i = 0; i < hiddenWord.length(); i++) { 
guessedWord.append('*'); 
} 
int numberOfCorrectLettersGuessed = 0; int numberOfMisses = 0; 

while (numberOfCorrectLettersGuessed < hiddenWord.length()) { 
System.out.print("(Guess) Enter a letter in word " + guessedWord + 
" > "); 
String s = input.nextLine(); 
char letter = s.charAt(0); 

if (guessedWord.indexOf(letter) >= 0) { 
System.out.println("\t" + letter + " is already in the word"); 
} else if (hiddenWord.indexOf(letter) < 0) { 
System.out.println("\t" + letter + " is not in the word"); 
numberOfMisses++; 
} else { 
int k = hiddenWord.indexOf(letter); 
while (k >= 0) { 
guessedWord.setCharAt(k, letter); 
numberOfCorrectLettersGuessed++; 
k = hiddenWord.indexOf(letter, k + 1); 
} 
} 
} 

System.out.println("The word is " + hiddenWord + ". You missed " + numberOfMisses +   (numberOfMisses <= 1 ? " time" : " times")); 

System.out.print("Do you want to guess for another word? Enter y or n> "); 
anotherGame = input.nextLine().charAt(0); 
}while (anotherGame == 'y'); 
} 
} 
+0

하고 오류가 무엇을해야합니까? – Prince

답변

1

을 무슨 짓을했는지 알아 내려고 계속됩니다. 이 같은 String.valueOf(letter)를 사용해보십시오 :

if (guessedWord.indexOf(String.valueOf(letter)) >= 0) { 

// Your code 

} 
+0

문제가 해결 되었다면이 대답을 수락하십시오. – Prince

1

StringBuilder#indexOf(char)가 정의되어 있지 않습니다. 할 수있어

if (guessedWord.indexOf(Character.toString(letter)) >= 0) { 
0

StringBuilder에는 indexOf (char) 메서드가 없습니다.

guessedWord.indexOf(letter) 

if (guessedWord.toString().indexOf(letter) >= 0) { 
+0

* "StringBuilder에는 indexOf 메서드가 없습니다."* 실제로, [있습니다] (http://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html#indexOf%28java. lang.String % 29). – Radiodef

+0

사실. 죄송합니다. 결정된 – Leo