扫描仪不读取空格字符后的内容



我有两个来自用户的输入。一个是说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);
}
}