Java 不需要时打印else语句 publicstaticvoidadd2q(){ 系统输出打印(“年龄:”); 年龄=sc.nextInt(); 如果(!(年龄>=3&&age=3&&age
如果您使用Java 不需要时打印else语句 publicstaticvoidadd2q(){ 系统输出打印(“年龄:”); 年龄=sc.nextInt(); 如果(!(年龄>=3&&age=3&&age,java,if-statement,while-loop,Java,If Statement,While Loop,如果您使用 age=sc.nextInt(); 使用后 String yn=sc.nextLine(); yn这是这行的最后一行(它是“”) 它更好用 age=Integer.parseInt(sc.nextLine())如果您的输入是每行的 例如: 如果您的输入是 3 y 在这种情况下,程序将打印 public static void add2q() { System.out.print("Age:"); age = sc.nextInt(); if (!(age &g
age=sc.nextInt();
使用后
String yn=sc.nextLine();
yn这是这行的最后一行(它是“”)
它更好用
age=Integer.parseInt(sc.nextLine())
如果您的输入是每行的
例如:
如果您的输入是
3
y
在这种情况下,程序将打印
public static void add2q() {
System.out.print("Age:");
age = sc.nextInt();
if (!(age >= 3 && age <= 80)) {
System.out.println("Sorry you must be between the age of 3 to 80");
} else if (age >= 3 && age <= 5) {
while (true) {
System.out.println("Need to be accompanied by an adult above 16\nHave an adult to accompany?y/n");
String yn = sc.nextLine();
if (yn.equals("y")) {
System.out.print("Child's Name: ");
name = sc.nextLine();
names.add(name);
price();
addAdult();
break;
} else if (yn.equals("n")) {
while (true) {
System.out.println("Sorry you cannot take this ride");
add2q();
break;
}
} else {
System.out.println("Invalid output"); //funny problem here
}
}
} else {
System.out.print("Name: ");
name = sc.nextLine();
names.add(name);
price();
}
}
而且还有印刷品
"Need to be accompanied by an adult above 16\nHave an adult to accompany?y/n"
这是因为yn有一个值“enter”(如Alex所说),值“y”在第二次迭代中被捕获
"Invalid output"
不使用输入中的新行字符。因此,当您键入3并按enter键时,您的输入将为:“3\n”,但扫描仪将只读取3。因此,当您调用
sc.nextInt()
扫描器将读入剩余的换行符,这会扰乱您的输入。您可以通过在scanner.nextInt()方法之后调用nextLine方法来解决这一问题,以便像这样使用剩余的换行符
sc.nextLine()
或者,您可以按照Fabian的建议,使用Integer.ParseInt()和sc.nextLine()在“3、4或5”之后键入什么?好吧,这就是您的代码所做的。如果年龄在3:5范围内,但下一个输入(
yn
)不是“y”
或“n”
它将输出一个无效的输出。如果您不想这样做,只需更新您的条件假设键入y/n,但在我键入之前,它将打印“无效输入”@Coldspeed@AxelH是的,在我输入y/n之前,它会打印“无效输入”这就是问题所在,然后读取副本…这是一个常见错误。但这在谷歌很容易找到。请进一步解释。nextInt
不要使用“回车”键扫描器的键,因此后面的每一条nextLine
都会注意到它并读取它。使用Integer.parseInt
更好地处理不正确的输入,而不是解析正确的内容。这不是解析内容的最佳方式。
sc.nextInt();
sc.nextLine();