繁体   English   中英

Java关于循环(循环)的帮助

[英]Java help regarding looping (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);

该循环在循环的每次迭代中两次运行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() ,因为game1.play()会一直循环直到输入正确的数字。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM