字符串“ 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
来达到相同的效果。