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

pexxcrt2  于 2021-07-11  发布在  Java
关注(0)|答案(1)|浏览(449)

我在java中使用scanner来获取用户的姓名、姓氏、email和tel等条目。姓名和姓氏是必需的,但email和tel不是必需的,用户只需按回车键就可以将其保留为空。
我要做的是添加一个方法,该方法将验证条目是否为空或长度是否为0,如果是这样,当用户点击enter时,扫描器将接受空字符串作为有效值。
这是我用来验证每个条目长度的方法,如果长度小于或大于最小值或最大值,则显示错误消息。

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;
       }

如果有人能帮我用那种方法,我将不胜感激。
谢谢

yftpprvb

yftpprvb1#

你可以用 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) 作为条件。

相关问题