字符串“ displayed”用*填充,和字符串“ secret”一样长。
秘密是来自数组的单词。

public void replace(String input)
    {

        for (int j = 0; j < displayed.length(); j++)
        {
           if (input.charAt(0) == secret.charAt(j))
           {
             displayed1 = displayed.replace(secret.charAt(j), input.charAt(0));

            //System.out.print(input.charAt(0) == secret.charAt(j) ? input.charAt(0) : "*");
           }
        }

        System.out.println(displayed1);


当我运行它时,它只给我*,它不会用输入替换*。
但是如果让它打印,它将替换它。

我在编程方面还很新,所以反正这可能是一个愚蠢的小事情,但是我找不到它:(

最佳答案

secret.charAt(j)等于input.charAt(0)时,displayed.replace的调用可能不会产生任何效果,因为您要用相同的字符替换一个字符。假设secret.charAt(j)'x';那么你的电话相当于

displayed1 = displayed.replace('x', 'x');


这等效于displayed1 = displayed,而且绝对不是您要执行的操作。

此外,displayed由星号组成,因此secret.charAt(j)的字母甚至都不会存在。您可能想要的是按字符组成字符串,而不是使用一系列重复的替换:

char[] chars = displayed;
for (int j = 0; j < displayed.length(); j++) {
    if (input.charAt(0) == secret.charAt(j)) {
        chars[j] = secret.charAt(j);
    }
}
displayed = new String(chars);
System.out.println(displayed);


上面的代码使用字符数组来更改字符串。您还可以使用可变字符串对象StringBuilder来达到相同的效果。

10-07 12:00