有关循环的Java帮助(执行循环)

时间:2014-11-12 07:34:10

标签: java loops do-loops

我正在尝试制作一个非常基本的游戏,您可以使用do循环猜测1-1000之间的数字。一切正常,除非我最终做出正确的猜测,我仍然会被提示做出另一个猜测,当我再次输入相同的正确猜测时,程序会像它想象的那样终止。

为什么我必须做出额外的猜测才能让我的程序工作?我是否需要额外的时间?另外,如果我做出正确的猜测(编译器会说我正确然后仍然提示我),那么错误的猜测(编译器会告诉我我错了),然后再次正确猜测,程序只会在之后终止我第二次做出正确的猜测。

底部的第二个do循环是我在main方法中的内容。以上所有内容都是我写的一种名为play的方法。

public static boolean play()
{

    boolean c;
    int n = 0;

    do {
        String input = JOptionPane.showInputDialog("Enter a number between 1-1000");
        n = Integer.parseInt(input);

        if (n == guess)
        {
            System.out.println("Correct");
            c = true;
        }
        else if (n < guess)
        {
            System.out.println("Not Right");
            c = false;
        }
        else
        {
            System.out.println("Not Right");
            c = false;
        }

        guess++;

    } while (c == false);

    return c;

}

主要方法:

    do {
        game1.play();
    } while (game1.play() != true);

1 个答案:

答案 0 :(得分:2)

这个循环在循环的每次迭代中运行两次play方法:

do {
    game1.play(); // first call
} while (game1.play()!=true); // second call

您没有测试第一次调用返回的值,因此即使它返回true,您仍然会再次调用game1.play(),这将再次显示“输入1-1000之间的数字”。

将其替换为:

boolean done = false;
do {
    done = game1.play();
} while (!done);

这只会在循环的每次迭代中调用play()一次。

那就是说,我不确定你为什么需要外环。 您只需拨打game1.play()一次就可以替换,因为game1.play()会循环,直到输入正确的号码。