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