繁体   English   中英

使用if语句和String.replace时遇到问题

[英]Trouble using if-statement and String.replace

我在Eclipse中开发的子手游戏具有以下代码段:

String secret = "apple";
String str = "-----"    
for (int i = 0; i < 5; i++) {
    if (letter == secret.charAt(i)){
        str = str.replace(str.charAt(i), letter);
    }   
}
System.out.println(str);

不幸的是,这是打印出来

aaaaa

代替

a----

我将如何工作?

String#replace(char,char)JavaDoc声明它将替换所有出现的对象,而不仅仅是第一次出现的对象。

由于您要制作子手游戏,因此只需要替换lettersecret出现的位置即可

使用StringBuilderchar[]手动替换String中的字符可能更好。

char[] secret="apple".toCharArray();
char[] str= new char[secret.length];
Arrays.fill(str, '-');

for (int i = 0; i < secret.length; i++) {
    if (letter ==secret[i]){
       str[i] = letter;
    }   
}

System.out.println(new String(str));

如果您只想在字符串中仅设置一个字符,则可以执行以下操作:

StringBuilder sbStr = new StringBuilder(str);
sbStr.setCharAt(4, 'x');

这是重构的代码:

String secret = "apple";
String str = "-----"    
StringBuilder sbStr = new StringBuilder(str);
for (int i = 0; i < 5; i++) {
   if (letter == secret.charAt(i)){
      sbStr.setCharAt(i, letter);
   }   
}
System.out.println(sbStr.toString());

str.replace(str.charAt(i), letter); 将不会起作用,因为它不能替换单个字符,但是String中与str.charAt(i)匹配的所有字符,您可以做的是使用StringBuilders更改给定索引处的字符,如下所示:

String secret = "apple";
StringBuilder str = new StringBuilder("-----");
for (int i = 0; i < 5; i++) {
    if (letter == secret.charAt(i)){
        str.setCharAt(i, letter);
    }   
}
System.out.println(str.toString()); // Or simply: System.out.println(str);

如果您不想使用StringBuilder,类似的方法也可以使用:

String secret = "apple";
String str = "-----";
for (int i = 0; i < 5; i++) {
    if (letter == secret.charAt(i)){
        str = str.substring(0, i) + secret.charAt(i) + str.substring(i);
    }   
}
System.out.println(str);

尽管我建议在这种情况下使用StringBuilder。

希望这可以帮助。

我建议对Secretstr都使用String builder,并且也要秘密标记猜测字符,因为您的解决方案可能无法重复字符

        char letter = 'a';
        StringBuilder secret = new StringBuilder("apple");
        StringBuilder str = new StringBuilder("-----");


        int index = secret.indexOf(String.valueOf(letter));
        if(index != -1)
        {
            secret.setCharAt(index, '-');
            str.setCharAt(index, letter);
        }

        System.out.println(secret);
        System.out.println(str);

希望能有所帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM