[英]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.