这些是该方法的说明:

// Given a character, a String containing a word, and a String containing a 'guess'
// for that word, return a new String that is a modified version of the 'guess'
// string where characters equal to the character inChar are uncovered.
// For example, given the following call:
//   modfiyGuess('G',"GEOLOGY", "**O*O*Y")
// This functions should return the String "G*O*OGY".


这是我的代码:

private static String modifyGuess(char inChar, String word, String currentGuess) {
    int count= 0;
    int occur= 0;
    while (count < word.length()-1)
    {
        if(!(word.charAt(count)== inChar)){

            count++;
        }
        else if(word.charAt(count)==inChar)
        {
            currentGuess= currentGuess.replace(currentGuess.charAt(count), inChar);
            occur++;
            count++;
        }
    }
    System.out.println("The character " +inChar +" occurs in " +occur +" positions");
    System.out.println(" ");
    return currentGuess;
}


出于某种原因,如果在字符串单词中找到了char inChar,则将currentGuess作为“ GGGGGG”之类的字符串返回,用inChar替换字符串中的所有char,而不是返回诸如“ G *** G”的内容
感谢您的任何回答!

最佳答案

如果是我,我会选择使用for循环,而不是使用一段时间,这确实是个人喜好,但是因为您需要遍历整个字符串,所以当用于。

如果条件彼此相反,也似乎是您的问题。您检查它是否不等于char,然后检查它是否相等。为什么不只是检查它是否为真,那么您就知道不是。在这里,字符串构建器用于很好地构建字符串。如果要替换,则替换,如果不替换,我们将附加结果(名称已调整,因此您必须做些事才能使用它)。

public static String modifyGuess(char letter, String word, String result) {
    int occurrences = 0;
    StringBuilder builder = new StringBuilder();
    for(int i = 0; i < word.length(); ++i) {
        if(word.charAt(i) == letter) {
            builder.append(letter);
            occurrences++;
        } else {
            builder.append(result.charAt(i));
        }
    }
    System.out.println("\nThe character " + letter +" occurs in " + occurrences +" positions\n");
    return builder.toString();
}

public static void main(String[] args){
    String word = "GEOLOGY";
    String result = "**OLO**";

    result = modifyGuess('G', word, result);
    System.out.println(result);
    result = modifyGuess('E', word, result);
    System.out.println(result);
    result = modifyGuess('Y', word, result);
    System.out.println(result);
}//SSCCE1


输出:


  字符G出现在2个位置
  
  G * OLOG *
  
  字符E出现在1个位置
  
  地理记录*
  
  字符Y出现在1个位置
  
  地质学

关于java - 如何用输入的字符替换“****”字符串中的某个字符? java ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20318887/

10-11 22:09
查看更多