为什么我的代码会永远运行?它只是一堆带有int的for循环,应该递减吗



我写了一些代码来打印记分板,但它没有完成运行。记分牌应该像这个

+-----+-----+-----+-----+-----+-----+-----+-----+-----+
|\ //|\ //|\ //|\ //|\ //|\ //|\ //|     |     |
| V/ | V/ | V/ | V/ | V/ | V/ | V/ |     |     |
| /. | /. | /. | /. | /. | /. | /. |     |     |
|// \|// \|// \|// \|// \|// \|// \|     |     |
+-----+-----+-----+-----+-----+-----+-----+-----+-----+

但是当我用一个数字来表示错误的猜测时,它会永远运行,当我用零来表示错误猜测时,记分牌看起来像这个

+-----+-----+
+-----+-----+
|     |     |
|     |     |
|     |     |
|     |     |
|     |     |
|     |     |
|     |     |
|     |     |
+-----+-----+
+-----+-----+

这是我的代码:

public class PhraseGame {
public static String drawScoreboard(int totalGuesses, int incorrectGuesses) {
String result = "";
String finalResult = "";
for (int j = totalGuesses; j > 0; j--) {
for (int g = incorrectGuesses; incorrectGuesses > 0; g--) {
result = ("+-----");
finalResult += result;
}
for (int i = totalGuesses - incorrectGuesses; i > 0; i--) {
result = ("+--a---");
finalResult += result;
}
result = ("+n");
finalResult += result;
}
for (int j = totalGuesses; j > 0; j--) {
for (int g = incorrectGuesses; incorrectGuesses > 0; g--) {
result = ("|\\ //");
finalResult += result;
}
for (int h = totalGuesses - incorrectGuesses; h > 0; h--) {
result = ("|     ");
finalResult += result;
}
result = ("|n");
finalResult += result;
}
for (int j = totalGuesses; j > 0; j--) {
for (int g = incorrectGuesses; incorrectGuesses > 0; g--) {
result = ("| \V/ ");
finalResult += result;
}
for (int i = totalGuesses - incorrectGuesses; i > 0; i--) {
result = ("|     ");
finalResult += result;
}
result = ("|n");
finalResult += result;
}
for (int j = totalGuesses; j > 0; j--) {
for (int g = incorrectGuesses; incorrectGuesses > 0; g--) {
result = ("| /.\ ");
finalResult += result;
}
for (int i = totalGuesses - incorrectGuesses; i > 0; i--) {
result = ("|     ");
finalResult += result;
}
result = ("|n");
finalResult += result;
}
for (int j = totalGuesses; j > 0; j--) {
for (int g = incorrectGuesses; incorrectGuesses > 0; g--) {
result = ("|// \\");
finalResult += result;
}
for (int i = totalGuesses - incorrectGuesses; i > 0; i--) {
result = ("|     ");
finalResult += result;
}
result = ("|n");
finalResult += result;
}
for (int j = totalGuesses; j > 0; j--) {
for (int g = incorrectGuesses; incorrectGuesses > 0; g--) {
result = ("+-----");
finalResult += result;
}
for (int i = totalGuesses - incorrectGuesses; i > 0; i--) {
result = ("+-----");
finalResult += result;
}
result = ("+");
finalResult += result;
}
result = "n";
finalResult += result;
return finalResult;
}
public static void main(String[] args) {
System.out.println(PhraseGame.drawScoreboard(4,2));
}

}

我是不是搞错了?

在总猜测数上循环两次。

您的第一层循环for (int j = totalGuesses; j > 0; j--)循环一次猜测总数,而具有incorrectGuessestotalGuesses - incorrectGuesses的第二层循环再次循环一次猜总数。

这意味着,总共猜测3次,而不是打印三次,你将打印九次!这就是为什么输出的每一行都要打印多次的原因。

除此之外,正如@ScaryWombat的回答一样,您使用incorrectGuesses的循环是不正确的,因为它比较的是incorrectGuesses > 0,而不是g > 0

您正在递减一个值,但不使用它

for (int g = incorrectGuesses; incorrectGuesses > 0; g--) {

您应该比较g0

for (int g = incorrectGuesses; g > 0; g--) {

这当然是相同的所有代码

相关内容

最新更新