有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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));
    }


}

我在什么地方出错了吗


共 (2) 个答案

  1. # 1 楼答案

    您在总猜测次数上循环了两次

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

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

    除此之外,在@ScaryWombat的回答中,您与incorrectGuesses的循环是不正确的,因为它比较incorrectGuesses > 0,而不是比较g > 0

  2. # 2 楼答案

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

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

    您应该将g0进行比较

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

    当然,您的所有代码都是相同的