填写“秘密字”字母

时间:2014-03-04 01:25:20

标签: java string replace

我正在做一个刽子手项目。 我已经掌握了大部分代码。

我无法工作的一部分是“秘密词”有多个字母是相同的。例如,“你好”有2个“l”。

这是代码部分的代码,它用猜测正确的字母替换“----”(hello):

int pos = $Input.indexOf($Guessed); 

if (pos == -1) 
{ 
    System.out.print("Search string '" + $Guessed + "' not found"); 
} 
else 
{ 
    System.out.println("\nSearch string found at " + (pos + 1));              
    pos = $Input.indexOf($Guessed);
    String before = $Display.substring(0, pos); 
    String after = $Display.substring(pos + $Guessed.length()); 
    System.out.println(before + $Guessed + after); 

    $Display = before + $Guessed + after;
    System.out.println($Display);            
    $GuessAmt++;
}

我已经在这里查看了各种答案,但到目前为止我无法找到工作。 显然,如果有人猜到“l”,那么“-----”将变为“--ll-”for(hello)。

我不是在寻找有人为我编码,因为我喜欢挑战,但有点暗示会很可爱!!

显然,通过查看我的代码,您可能会猜测我们不允许使用数组。这只是Java类的真正介绍。

任何帮助都将不胜感激。

编辑:要明确的是,目前只有第一个“l”不是“你好”的“l”。

编辑:改为此。但是,现在它反复重复“内部if”打印语句。不知道如何解决这个问题!

int pos = $Input.indexOf($Guessed); 

        if (pos == -1) 
        { 
            System.out.print("Search string '" + $Guessed + "' not found"); 
        } 
        else 
        { 
            //System.out.println("\nSearch string found at " + (pos + 1)); 

            for(int i=0;i<$StrLength;i++)
            {
                System.out.println(i);
                if($Input.charAt(i) == $Guessed.charAt(0))
                {
                    i = $Input.indexOf($Guessed);
                    String before = $Display.substring(0, i); 
                    String after = $Display.substring(i + 1); 
                    System.out.println("inside if" + before + $Guessed + after); 
                    $Display = before + $Guessed + after;
                }
            }



                System.out.println($Display);



            $GuessAmt++;
        }

2 个答案:

答案 0 :(得分:1)

如果您仍想使用indexOf,您也可以使用其重载版本以确保您已完成所有字母出现:

int index = str.indexOf('l');
while(index  >= 0) {
     // FILL THE BLANKS WITH THE LETTER
     index  = str.indexOf('l', index +1);
}

答案 1 :(得分:0)

您可以迭代String并使用word.charAt(i)分别检查每个字符。

for (int i = 0; i < word.length; i++) {
    if (word.charAt(i) == guessedChar) {
        // do stuff
    }
}