所以我几乎是一个编程新手,忙于处理"do while循环“,我的代码可能很糟糕,很可能有1000种更好的方法来做我想要做的事情,但不管怎样。
我尝试使用main方法,然后使用其他两个方法(出于练习目的),要求用户选择1到10之间的一个数字,然后如果他们想重试。
我让代码一直运行,直到它要求用户输入yes/no,但随后代码停止运行,我不知道为什么?
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我似乎不能进一步得到它,以便我输入是或否。
我知道这是最基本的,我很可能看起来很可悲,但任何帮助都将不胜感激。
也许另一个菜鸟可以得到帮助别人的机会:)
非常感谢!
发布于 2017-06-21 04:03:28
使用next()而不是nextLine(),因为当您读取int并添加\n来提交值时。扫描仪将此视为输入。next()应该忽略之前输入的\n,并按照您的预期接受输入。
发布于 2017-06-21 04:00:33
只需在方法中创建扫描器的新实例,就可以避免nextLine错误。我在chooseNum和tryAgain中声明了一个新的扫描器,这将避免缓冲输入导致的问题,从而对您的代码进行了编辑。我希望这能有所帮助。
import java.util.Scanner;
public class dowhile {
public static void main(String[] args) {
chooseNum();
}
public static boolean chooseNum() {
Scanner in = new Scanner(System.in);
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(){
Scanner in = new Scanner(System.in);
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;
}
}发布于 2017-06-21 04:02:31
当执行return tryAgain();行时,chooseNum()方法结束。这是return语句的结果。
https://stackoverflow.com/questions/44661797
复制相似问题