这些是该方法的说明:
// 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/