nextInt()
时,都会消耗输入。因此,在您的情况下,选中else if
条件时,将消耗下一个输入,而不是比较前一个输入。您需要缓存扫描仪的状态:这里是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");
}
}
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 == 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");
}
}
答案已经完成,您需要保存答案,但是我会减少一些代码以使其更简洁。
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");
nextInt()
时,都会消耗输入。因此,在您的情况下,选中else if
条件时,将消耗下一个输入,而不是比较前一个输入。您需要缓存扫描仪的状态:input.nextInt()
都会等待输入的新键(这里是用户输入)。请先输入内容,然后再检查。 (在条件语句中未输入)。
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");