为什么我的扫描仪不能使用2个不同的if语句?

问题描述 投票:0回答:5

这里是Java的新手。我编写了以下简单的代码,要求用户在选项1或2之间进行选择。如果所选选项为1,则应打印“ You said hi”,效果很好,如果所选选项为2,则应打印“你说再见”不是,我在这里想念什么吗?也许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");
    }
}
java java.util.scanner
5个回答
3
投票
每次您呼叫nextInt()时,它都会停下来等待int。在这里,您想将用户的单个int与一个

或[]] >> 2)进行比较。保存从用户那里获得的int。喜欢,int v = input.nextInt(); if (v == 1) { System.out.println("You said hi"); } else if (v == 2) { System.out.println("you said goodbye"); }

每次您在扫描仪上调用nextInt()时,都会消耗输入。因此,在您的情况下,选中else if条件时,将消耗下一个输入,而不是比较前一个输入。您需要缓存扫描仪的状态:

int answer = input.nextInt(); if (answer == 1) { System.out.println("You said hi"); } else if (answer == 2) { System.out.println("you said goodbye") }

对于您的特定情况,转换为switch语句将是另一种选择,它仅对其操作数求值一次:

switch (input.nextInt()) { case 1: System.out.println("You said hi"); break; case 2: System.out.println("you said goodbye") break; }

每次调用input.nextInt()都会等待输入的新键(这里是用户输入)。

input.nextInt() == 1将等待用户输入。

如果验证为true,则线程将成功执行System.out.println("You said hi")。否则,如果它验证为false,它将在input.nextInt() ==2中执行条件,由于input.nextInt(),线程将继续等待用户的下一个输入。

如果仅希望从用户那里获得输入,则仅执行一次input.nextInt()并将其存储在变量中,并对其进行运算。喜欢,

// 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"); }

请先输入内容,然后再检查。 (

在条件语句中未输入)。

您编辑的代码如下:

    添加了一行(int selectedOption = input.nextInt()
  • 编辑条件语句(selectedOption == 1selectedOption == 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"); } }

答案已经完成,您需要保存答案,但是我会减少一些代码以使其更简洁。

System.out.println("Please type 1 to say hi || 2 to say goodbye"); int answer=input.nextInt(); if (answer == 1) System.out.println("You said hi"); if (answer == 2) System.out.println("you said goodbye");


3
投票
每次您在扫描仪上调用nextInt()时,都会消耗输入。因此,在您的情况下,选中else if条件时,将消耗下一个输入,而不是比较前一个输入。您需要缓存扫描仪的状态:

1
投票
每次调用input.nextInt()都会等待输入的新键(这里是用户输入)。

1
投票
请先输入内容,然后再检查。 (

在条件语句中未输入)。


0
投票
答案已经完成,您需要保存答案,但是我会减少一些代码以使其更简洁。

System.out.println("Please type 1 to say hi || 2 to say goodbye"); int answer=input.nextInt(); if (answer == 1) System.out.println("You said hi"); if (answer == 2) System.out.println("you said goodbye");

© www.soinside.com 2019 - 2024. All rights reserved.