我有2个来自用户的输入。一个是说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();
}
答案 0 :(得分:3)
首先,您需要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()
方法。
答案 1 :(得分:1)
您不能在同一输入流上构建多个Scanner。它们将彼此冲突,导致您观察到的不一致。
使用所示程序,对方法input()的每次调用都会在一个唯一的System.in上构建一个新的Scanner。同一输入流上不止一个Scanner。无法正常工作。
相反,请在程序开始时一劳永逸地构建一个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);
}
}