我有一个问题,在任何地方都找不到关于从输入中获取字符串的逻辑的解决方案。如果你能帮我解答这个问题,我会很高兴。首先,我的问题是,由于我希望 hasNext() 方法为我的程序返回 false,所以我必须只使用一个空格字符来注册到 Java 中输入的字符串中。 正如一些消息来源所说,“为了让 hasNext() 方法返回 false 值,下一个字符必须是“空白”,因此只有一个空格字符就足以让 hasNext() 方法返回 false 并退出循环。
示例代码如下;
Scanner scan = new Scanner(System.in);
int counter=0;
while (scan.hasNext()) { /*When I just type a space
character to the console and then
scan.hasNext() doesn't return false.
so the program never get out from the loop*/
counter++;
System.out.println(counter);
String s = scan.next();
}
scan.close();
System.out.println("It's outed!");
在控制台输入空格字符或不输入字符并按回车按钮后,s 的字符串必须像源代码所说的那样才能跳出循环;
String s = " ";
当我尝试将像上面这样的空格字符放入输入的字符串中,然后按 Enter 按钮时。我的控制台不执行任何过程,上面的计数器也没有增加。按下回车按钮后,它不会采用上面我写的字符。控制台只会传递到新行。我研究了这种情况,但看不到任何相关信息。
1 - 如何只从输入中获取空格字符或不带任何字符,将其注册到 Java 中的字符串中,而不会出现上述问题?
2 - 可能还有另一种方法可以退出上面的循环。如果还有别的解决办法的话。我期待收到您的来信。
感谢您的帮助和理解。祝你有美好的一天!
不知道你是否想要这样的东西,尝试一下并写评论
Scanner sc = new Scanner(System.in);
int counter = 0;
String str = "";
while (! (str = sc.nextLine()).equals(" ")) {
// ==== options ===== //
// if you want when user not typing anything [ Empty ]
if (str.isEmpty()) {
break;
}
// or if user entred "exit"
if (str.equals("exit")) {
System.out.println("Exit");
break;
}
// ================== //
counter++;
System.out.println(counter + " - " + str);
}
// str = " "; ended the while loop
System.out.println("--- out ---");