如何在Java中只使用一个空格字符来从输入字符串中注册一个字符串?

问题描述 投票:0回答:1

我有一个问题,在任何地方都找不到关于从输入中获取字符串的逻辑的解决方案。如果你能帮我解答这个问题,我会很高兴。首先,我的问题是,由于我希望 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 - 可能还有另一种方法可以退出上面的循环。如果还有别的解决办法的话。我期待收到您的来信。

感谢您的帮助和理解。祝你有美好的一天!

java string loops input space
1个回答
1
投票

不知道你是否想要这样的东西,尝试一下并写评论

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 ---");
© www.soinside.com 2019 - 2024. All rights reserved.