Java 为什么';我的扫描仪不能处理2个不同的if语句吗?
这里是Java新手。我编写了以下简单代码,要求用户在选项1或2之间进行选择。如果选择的选项是1,那么它应该打印“You said hi”,这很好,如果选择的选项是2,它应该打印“You said bye”,而不是,我在这里遗漏了什么吗?也许If语句是错误的 守则:Java 为什么';我的扫描仪不能处理2个不同的if语句吗?,java,java.util.scanner,Java,Java.util.scanner,这里是Java新手。我编写了以下简单代码,要求用户在选项1或2之间进行选择。如果选择的选项是1,那么它应该打印“You said hi”,这很好,如果选择的选项是2,它应该打印“You said bye”,而不是,我在这里遗漏了什么吗?也许If语句是错误的 守则: public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("Please
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Please type 1 to say hi");
System.out.println("Please type 2 to say goodbye");
if (input.nextInt() == 1) {
System.out.println("You said hi");
} else if (input.nextInt() == 2) {
System.out.println("you said goodbye");
}
}
每次调用
nextInt()。在这里,您需要将来自用户的单个int
与一个或两个进行比较。保存从用户处获得的int
。像
int v = input.nextInt();
if (v == 1) {
System.out.println("You said hi");
} else if (v == 2) {
System.out.println("you said goodbye");
}
每次调用input.nextInt()
都将等待input中的新键(这里是用户输入)
input.nextInt()==1
将等待用户输入
如果验证为true
,线程将成功执行System.out.println(“您好”)
。
否则,如果它验证为false
,它将执行input.nextInt()==2
中的条件,因为input.nextInt()
,线程将继续等待用户的下一个输入
如果希望只从用户获取一次输入,请只执行一次input.nextInt()
,并将其存储在变量中,然后对其运行cases。像
// input from user
int selection = input.getInt();
if (selection == 1) {
System.out.println("the user entered 1");
}
else if (selection == 2) {
System.out.println("the user entered 2");
}
每次在扫描仪上调用nextInt()。因此,在您的情况下,当选中else if
条件时,将使用下一个输入,而不是比较前一个输入。您需要缓存扫描仪的状态:
int-answer=input.nextInt();
如果(答案=1){
System.out.println(“你说你好”);
}否则如果(答案=2){
System.out.println(“你说再见了”)
}
对于您的特定情况,转换为switch
语句将是另一个选项,它只对其操作数求值一次:
开关(input.nextInt()){
案例1:
System.out.println(“你说你好”);
打破
案例2:
System.out.println(“你说再见了”)
打破
}
请先获取输入,然后进行检查。(不在条件语句中获取输入
您编辑的代码如下所示:
- 添加了一行(
int-selectedOption=input.nextInt()
)
- 编辑条件语句(
selectedOption==1
和selectedOption==2
)
您要求用户输入两次。所以你必须输入两次数字。这可能不是你想要的。可能想在你的答案中添加一个如何解决这个问题的建议。我明白了,我现在明白了。非常感谢。
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Please type 1 to say hi");
System.out.println("Please type 2 to say goodbye");
//Get input
int selectedOption = input.nextInt() ;
//Check
if (selectedOption == 1) {
System.out.println("You said hi");
} else if (selectedOption == 2) {
System.out.println("you said goodbye");
}
}