【问题标题】:Multi-word scanner input in java?java中的多字扫描仪输入?
【发布时间】:2013-11-22 09:24:36
【问题描述】:
所以我尝试根据用户的输入使用 if-else 语句。当用户的输入只有一个单词时,它可以工作,但是,多个单词输入无法识别并触发 else 语句。我该如何解决这个问题?
导入 java.util.Scanner;
公共类 MyFirstJavaClass {
public static void main(String[] args) {
@SuppressWarnings("resource")
Scanner myScanner = new Scanner(System.in);
String answer;
System.out.println("Catch the tiger or run away?");
answer = myScanner.next();
if (answer.equals("Catch the tiger" )) {
System.out.println("You've been mauled by a tiger! What were you thinking?");
answer = myScanner.next();
} else {
System.out.println("run away");
}
}
}
【问题讨论】:
标签:
java
if-statement
user-input
java.util.scanner
【解决方案1】:
替换:
answer = myScanner.next();
与:
answer = myScanner.nextLine();
next 只会读入下一个值,直到它到达一个空格或换行符。您想在进行比较之前阅读整行
【解决方案2】:
试试这个:
Scanner scanner = new Scanner(System.in);
int choice = 0;
while (scanner.hasNext()){
if (scanner.hasNextInt()){
choice = scanner.nextInt();
break;
} else {
scanner.next(); // Just discard this, not interested...
}
}
参考:
Flush/Clear System.in (stdin) before reading
【解决方案3】:
试试这个
import java.util.Scanner;
public class MyFirstJavaClass {
public static void main(String[] args) {
@SuppressWarnings("resource")
Scanner myScanner = new Scanner(System.in);
System.out.println("Catch the tiger or run away?");
if (myScanner.hasNext("Catch the tiger")) {
System.out.println("You've been mauled by a tiger! What were you thinking?");
} else {
System.out.println("run away");
}
}
}