java为什么我的代码永远运行?它只是一堆带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));
}
}
我在什么地方出错了吗
# 1 楼答案
您在总猜测次数上循环了两次
第一层循环
for (int j = totalGuesses; j > 0; j )
循环一次猜测总数,而第二层循环incorrectGuesses
和totalGuesses - incorrectGuesses
再次循环一次猜测总数这意味着,总共有3次猜测,而不是打印三次,您将打印九次!这就是为什么输出的每一行都要打印多次
除此之外,在@ScaryWombat的回答中,您与
incorrectGuesses
的循环是不正确的,因为它比较incorrectGuesses > 0
,而不是比较g > 0
# 2 楼答案
您正在递减一个值,但不使用它
您应该将
g
与0
进行比较当然,您的所有代码都是相同的