将字符串数组索引与字符串进行比较

时间:2014-10-31 18:32:52

标签: java arrays string

我无法比较一个包含单词的数组,这些单词被分解为字母。这是我的代码:(它是刽子手游戏的一部分)

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;的数组,对应于单词中的字母数

任何帮助都会非常感激!谢谢!

6 个答案:

答案 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

由于您已经定义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
  • 我建议首先使用一些代码来验证输入数据。如果你传递一个空字符串进行猜测,你将会失败。
  • 其次,您要将String与角色进行比较。使用上面的代码。

答案 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

可能还有其他地方可以改进,但这可以解决您的直接问题。

相关问题