字符串"显示"填充*和它一样长,字符串"秘密"。 而秘密是阵列中的一个词。
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);
当我运行它时它只给我*,它不会用输入替换*。 但如果让它打印出来,它就会取而代之..
我在编程时相当新,所以它可能是一个愚蠢的小东西,但总是找不到它(
答案 0 :(得分:1)
当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
(一个可变的字符串对象)来实现相同的效果。