【问题标题】:Check if a string is empty or only whitespace in java [duplicate]检查java中的字符串是否为空或只有空格[重复]
【发布时间】:2018-01-09 19:53:40
【问题描述】:

所以我对我的代码有疑问。我的代码的一部分包括一个关于个人详细信息的问题,并确保他们正确回答。这个人不能用空格或输入等来回答它。如果他们回答不正确,他们应该被再次发送回问题并重新输入他们的详细信息。

这是我已经走了多远:

   System.out.println("Name: ");
       String name = scan.nextLine();

   if(name.equals(null) || name.equals("")) {
        System.out.println("Name can't be empty, please enter again.");

   System.out.println("Age: ");
       int age = scan.nextInt();

   if(age.equals(null) || age.equals("")) {
        System.out.println("Age can't be empty, please enter again.");

现在的问题是,如果这个人用空格回答,我不太确定如何处理这个问题。该代码不处理空格。 另外,我怎样才能让程序自动回到前。 “姓名:”如果回答错误?

/安娜

【问题讨论】:

  • 您可以在拨打equals("")之前先拨打trim。顺便说一句,你应该这样做 name == null 否则你最终会得到一个 NullPointerException
  • 将你的问题标题复制到谷歌,就会出现这个...How do I check that a Java String is not all whitespaces?
  • 除此之外,您必须更改逻辑:如果名称或年龄为空,则继续。但是,您需要再次扫描它们。您可以使用while 循环来执行此操作。查看this answer 以了解其工作原理。
  • 但是话又说回来,如果答案不正确,我该如何编写代码使其自动返回“名称:”?

标签: java string whitespace user-input


【解决方案1】:

使用trim()。它将删除字符串开头和结尾的空格。

if (string.trim().isEmpty())

【讨论】:

  • 谢谢,试过了,但仍然允许我输入一个只有空格的名称...
  • @Anna 看看我对你问题的评论。
  • 我试过if (name.equals(null) || name.trim().equals("")) {...}。当我只输入空格时它可以工作。
  • 使用isEmpty() 比使用length() 更具声明性:!string.trim().isEmpty()
  • 你说得对,我编辑我的答案。
【解决方案2】:

name.matches("\\s*") 将返回 true 是 name 为空或只有空格,其中输入 name String

【讨论】:

  • 仅供参考,您不需要 ^$ 与 java 的 matches();它们是隐含的,因为 matches() 必须匹配 whole 输入。您也不需要[]name.matches("\\s*") 就够了
猜你喜欢
  • 2017-08-19
  • 2013-01-21
  • 1970-01-01
  • 1970-01-01
  • 2014-04-11
  • 2015-06-05
  • 2015-08-22
  • 1970-01-01
  • 2019-06-06
相关资源
最近更新 更多