我无法比较一个包含单词的数组,这些单词被分解为字母。这是我的代码:(它是刽子手游戏的一部分)
public static void isGuessCorrect( String guess, String wordInPlay, String[] hangmanScores){
String[] letterGuessedAgainst = wordInPlay.split("");
for (int i = 0;i < letterGuessedAgainst.length; i ++)
System.out.print(letterGuessedAgainst[i]);
System.out.println("Letter guessed against is: "+letterGuessedAgainst[1]);//testing purposes
System.out.println("My guess is: "+guess.charAt(0));//testing purposes
for (int i = 0;i < letterGuessedAgainst.length; i++){
if (letterGuessedAgainst.equals(guess.charAt(0))){//this line isn't working
System.out.println("they're equal");//want it to return this
}//end if
else
System.out.println("they're not");//returns this instead
}//end for
}//end method
guess
是一个字符串holds
一封信wordInPlay
是正在播放的字词letterGuessedAgainst
是正在播放的单词的字母hangmanScores
是一个只保存&#34; _&#34;的数组,对应于单词中的字母数任何帮助都会非常感激!谢谢!
答案 0 :(得分:1)
问题是letterGuessedAgainst
是一个数组而您正在尝试比较String[]
与char
if (letterGuessedAgainst.equals(guess.charAt(0))){//this line isn't working
首先,您必须在循环中使用索引i
letterGuessedAgainst[i]
其次,您需要与guess
而非guess.charAt(0)
进行比较,因为在比较equals()
和String
时,您将无法char
} p>
由于您已经定义guess
是一个只包含1个字符的字符串,您可以这样做:
if (letterGuessedAgainst[i].equals(guess)) {
答案 1 :(得分:0)
你不需要做
if (letterGuessedAgainst[i].charAt(0).equals(guess.charAt(0))){
而不是将数组与char进行比较
答案 2 :(得分:0)
而不是分成多个单个字符String
,我建议您使用wordInPlay.toCharArray();
,然后您可以使用For-Each
loop(和我)迭代char[]
相信你想搜索整个String
并说出是否找到了角色;不是每个角色是否匹配)你的代码可能看起来像
public static void isGuessCorrect(String guess, String wordInPlay,
String[] hangmanScores) {
char[] letterGuessedAgainst = wordInPlay.toCharArray();
char ch = guess.charAt(0);
System.out.println("My guess is: " + ch);
boolean found = false;
for (char letter : letterGuessedAgainst) {
if (letter == ch) {
found = true;
break;
}
}
if (found) {
System.out.printf("%s contains guess %c%n", wordInPlay, ch);
} else {
System.out.printf("%s does not contain guess %c%n", wordInPlay, ch);
}
}
答案 3 :(得分:0)
您将char(charAt()返回)与字符串进行比较,它们不相等。我建议使用字符数组,或者在letterGuessedAgainst上使用charAt()。
来源: http://docs.oracle.com/javase/7/docs/api/java/lang/String.html
答案 4 :(得分:0)
if (guess.length==0) return null; // some kind of error handling
char quessedChar = guess.charAt(0);
for (int i = 0;i < letterGuessedAgainst.length; i++){
if (letterGuessedAgainst.charAt(i) == quessedChar ){
//System.out.println("Nice guess! Here are all the "+guess+"'s in the word.");
//System.out.println(hangmanScores);
System.out.println("they're equal");//want it to return this
}//end if
else
System.out.println("they're not");//returns this instead
}//end for
答案 5 :(得分:0)
更新了您的代码以开始工作:
public static void isGuessCorrect(String guess, String wordInPlay, String[] hangmanScores) {
char[] letterGuessedAgainst = wordInPlay.toCharArray(); //Changed to Char Array
for (int i = 0; i < letterGuessedAgainst.length; i++) {
System.out.print(letterGuessedAgainst[i]);
}
System.out.println("Letter guessed against is: " + letterGuessedAgainst[1]);//testing purposes
System.out.println("My guess is: " + guess.charAt(0));//testing purposes
for (int i = 0; i < letterGuessedAgainst.length; i++) {
if (letterGuessedAgainst[i] == guess.charAt(0)) {//Made == since they are all Chars now
//System.out.println("Nice guess! Here are all the "+guess+"'s in the word.");
//System.out.println(hangmanScores);
System.out.println("they're equal");//want it to return this
}//end if
else {
System.out.println("they're not");//returns this instead
}
}//end for
}//end method
可能还有其他地方可以改进,但这可以解决您的直接问题。