我有两个来自用户的输入。一个是说greetings
,另一个是tell me your name
但当我在你好之后写时,ex: Hello mate!!
扫描仪不会读取第二个输入,即mate
,并从第一个字符串中提取hello
。第二个也是相同的
有任何建议
感谢
public static void main(String[] args) {
System.out.println("Choose what would you like to say ?");
String str1 = "";
String str2 = "";
System.out.println("Say any greetings word");
str1 = input();
System.out.println("Tell me your name");
str2 = input();
if (str2.equalsIgnoreCase("zia")) {
System.out.println("Hello Mr Zia, What a nice suprise");
}
else {
System.out.println(str1 + " " + str2);
}
}
public static String input() {
Scanner sc = new Scanner(System.in);
return sc.next();
}
首先,您需要sc.nextLine()
来读取整个输入。
其次,你不应该每次都创建一个新的扫描仪。只需像这样重复使用扫描仪:
Scanner sc = new Scanner(System.in);
System.out.println("Say any greetings word");
str1 = sc.nextLine();
System.out.println("Tell me your name");
str2 = sc.nextLine();
如果你不再需要,请关闭扫描仪:
sc.close();
这样,您甚至不再需要input()
-方法。
不能在同一输入流上构建多个Scanner。它们会相互冲突,导致你观察到的不一致。
如图所示,对方法input((的每次调用都会在一个唯一的System.in上构建一个新的Scanner。这是同一输入流上的多个Scanner。不行。
相反,在程序一开始就一次性构建一个扫描仪,每次需要读取输入时都使用一个唯一的扫描仪。
像这样:
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Choose what would you like to say ?");
System.out.println("Say any greetings word");
String greeting = scanner.next();
System.out.println("Tell me your name");
String name = scanner.next();
if (name.equalsIgnoreCase("zia")) {
System.out.println("Hello Mr Zia, What a nice suprise");
} else {
System.out.println(greeting + " " + name);
}
}