Java 为什么';我的扫描仪不能处理2个不同的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

这里是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 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");
    }
}