我正在做一个刽子手项目。 我已经掌握了大部分代码。
我无法工作的一部分是“秘密词”有多个字母是相同的。例如,“你好”有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++;
}
答案 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
}
}