为什么不取代炭?

时间:2014-10-25 10:33:26

标签: java string input replace chars

字符串"显示"填充*和它一样长,字符串"秘密"。 而秘密是阵列中的一个词。

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);

当我运行它时它只给我*,它不会用输入替换*。 但如果让它打印出来,它就会取而代之..

我在编程时相当新,所以它可能是一个愚蠢的小东西,但总是找不到它(

1 个答案:

答案 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(一个可变的字符串对象)来实现相同的效果。