【发布时间】:2017-06-20 19:46:07
【问题描述】:
所以我几乎是编码的新手,并且正忙于玩“do while 循环”,我的代码可能很糟糕,而且很可能有 1000 种更好的方法来做我想做的事情,但无论如何。
我正在尝试使用 main 方法,然后使用其他两种方法(出于练习目的)要求用户选择 1 到 10 之间的数字,然后如果他们想再试一次。
我让代码运行,直到它要求用户输入是/否,但随后代码停止运行,我不知道为什么?
public static void main(String[] args) {
chooseNum();
}
public static boolean chooseNum() {
int number = 4;
do {
System.out.println("Enter a number 1 to 10");
int userNum = in.nextInt();
if (number == userNum) {
System.out.println("You chose the correct number!");
return tryAgain();
} else if (number != userNum) {
System.out.println("You chose the incorrect number!");
return tryAgain();
} else
System.out.println("invalid Response");
}
while (false);
return false;
}
public static boolean tryAgain(){
System.out.println("Try again? yes/no");
String response = in.nextLine();
if (response.equalsIgnoreCase("yes")){
return chooseNum();
}else if (response.equalsIgnoreCase("no")){
return false;
}else
return false;
}
}
我的输出如下:
Enter a number 1 to 10
1
You chose the incorrect number!
Try again? yes/no
Process finished with exit code 0
我似乎无法进一步输入是或否。
我知道这是基本的,我很可能看起来很可怜,但我们将不胜感激。
也许另一个菜鸟可以有机会帮助别人:)
非常感谢!
【问题讨论】:
-
预期输出是什么?
-
试试
do {...} while (true)而不是...while(false)。 -
"while(false)" 实际上是在告诉循环停止循环。您需要将其替换为一些实际情况以进行检查。
-
其实这里while(false)是正确的,因为它是用递归循环的,而不是while循环。 (PS,不要将递归用作while循环!)
-
你应该把while循环改成
while(tryAgain()),不要在tryAgain中调用chooseNum