【问题标题】:Replace multiple of the same char in a char array替换字符数组中相同字符的多个
【发布时间】:2015-03-08 21:02:39
【问题描述】:

我正在用 Java 开发“猜密码”游戏。我有一个 char 数组,其中包含 _ 相对于秘密单词中的字母数量。我正在编写一种将_ 替换为猜测字母的方法。我的问题是当我有多个相同的字母时;只有第一次出现被替换。这是我的代码:

public void replaceBlank(char letter){
    if(guessLetter(letter)==true){
        int x=getSecretWord().indexOf(letter);
            charArray[x]=letter;
        }
   }

if 中的代码是直接处理替换_ 的部分。我在想我需要一个 for 循环,但我不确定如何实现它。

【问题讨论】:

  • 旁注:if(guessLetter(letter)) 就够了
  • 你必须遍历整个数组

标签: java arrays string replace char


【解决方案1】:

indexOf 仅返回字符第一次出现的索引。我不使用它,而是将秘​​密单词视为一个数组并对其进行迭代:

public void replaceBlank(char letter) {
    char[] secret = getSecretWord().toCharArray();
    for (int i = 0; i < secret.length; ++i) {
        if (secret[i] == letter) {
            charArray[i] = letter;
        }
    }
}

【讨论】:

  • 我认为getSecretWord() 不会返回char[]
  • @m0skit0 arg,缺少对 toCharArray() 的调用 - 已修复。谢谢!
  • 或者您可以将secret 保留为String 并使用secret.charAt(i) 访问字符。这将节省从字符串中复制字符以创建 char 数组。
【解决方案2】:

你必须遍历整个数组,为每个索引检查它是否是字母,然后替换。

【讨论】:

    猜你喜欢
    • 2020-08-31
    • 2016-05-18
    • 1970-01-01
    • 2020-06-02
    • 1970-01-01
    • 2017-01-06
    • 2017-09-28
    • 1970-01-01
    • 2016-09-28
    相关资源
    最近更新 更多