如何在Java中拒绝空格作为输入

时间:2019-01-14 11:25:09

标签: java

我正在尝试创建一个将拒绝仅包含空格的答案的代码。到目前为止,我已经编写了一个代码来拒绝空的输入,但是一旦用户输入了空格,程序就会接受它。

如何防止这种情况?谢谢!

    do {
        while(true) {
            System.out.print("Dog's name: ");
            String dogName = null;
            dogName = scan.nextLine().toLowerCase();
            String n = dogName.replaceAll("\\s", "");

            if(dogName.isEmpty()) {
                System.out.println("Error: Name can't be empty.");
                continue;   
            }

5 个答案:

答案 0 :(得分:4)

在这种情况下,trim()方法非常方便。来自documentation

  

返回字符串的副本,带有前导和尾随空格   省略。

您可以通过以下方式使用它:

while (true) {
    System.out.print("Dog's name: ");
    String dogName = scan.nextLine().trim().toLowerCase();

    if (dogName.isEmpty()) {
        System.out.println("Error: Name can't be empty.");
        continue;
    }
}

答案 1 :(得分:0)

您可以使用String.matches检查空字符串:

artifacts.<PROJECT-ID>.appspot.com
us.artifacts.<PROJECT-ID>.appspot.com

答案 2 :(得分:0)

dogName.trim()将删除开头和结尾的空格,如果整个String由空格组成,则它将替换所有空格并留下一个空字符串。例如

“狗”->“狗”

“狗名”->“狗名”

如果要检查是否有空/空白,请查看StringUtils.isNotBlank的“灵感”,并根据这些内容编写自己的静态util方法。

答案 3 :(得分:0)

一个简单的解决方案,使用

更新代码
dogName.replaceAll("[^a-zA-Z0-9]", "");

这样,您的代码就会变得...也要记住更新if语句。

do {
        while(true) {
            System.out.print("Dog's name: ");
            String dogName = scan.nextLine().toLowerCase();
            String n = dogName.replaceAll("[^a-zA-Z0-9]", "");

            if(n.isEmpty()) {
                System.out.println("Error: Name can't be empty.");
                continue;   
            }
   }

答案 4 :(得分:0)

谢谢大家的帮助!我刚刚在代码中添加了.trim():)

现在是: 字符串dogName = scan.nextLine()。toLowerCase()。trim();