在 Java 中使用 Scanner 接受空字符串或长度为 0 的字符串作为输入

Accept empty string or string with length of 0 as input using Scanner in Java

我在 Java 中使用 Scanner 来获取用户条目,例如名字、姓氏、电子邮件和电话。名字和姓氏是必需的,但电子邮件和电话不是必需的,用户只需按回车键即可将它们留空。

我想做的是添加一个方法来验证条目是否为空或长度为 0 以及是否为空 当用户点击输入时,空字符串将被扫描仪接受为有效值。

这是我用来验证每个条目的长度并在长度小于或大于最小值或最大值时显示错误消息的方法。

public static String validateString (String msgSoll, String msgErr, 
               int lngMin, int lngMax) {
          String myString = null;
          
          if (lngMin >= 0 && lngMax >= lngMin) {
             do {
                System.out.print(msgSoll);
                myString = myScanner.nextLine();
                if (myString.length() < lngMin || myString.length() > lngMax) {
                   System.out.println(msgErr);
                }
             } while (myString.length() < lngMin || myString.length() > lngMax);
          }
          return myString;
       }

如果有人可以帮助我使用该方法,我将不胜感激。

谢谢

您可以使用 String#isBlank(可从 Java-11 获得)来测试输入。

import java.util.Scanner;

public class Main {
    static Scanner myScanner = new Scanner(System.in);

    public static void main(String[] args) {
        // Test
        System.out.println("Your name: " + validateString("Enter your name: "));
    }

    public static String validateString(String message) {
        String input = "";
        do {
            System.out.print(message);
            input = myScanner.nextLine();
            if (input.isBlank()) {
                System.out.println("It's an empty string.");
            }
        } while (input.isBlank());
        return input;
    }
}

样本运行:

Enter your name: 
It's an empty string.
Enter your name: 
It's an empty string.
Enter your name: Hello
Your name: Hello

注意:如果你的Java版本低于11,可以用if (input.isEmpty() || input.trim().length() == 0)作为条件