使用Java中的扫描仪接受空字符串或长度为0的字符串作为输入

使用Java中的扫描仪接受空字符串或长度为0的字符串作为输入,java,string,java.util.scanner,Java,String,Java.util.scanner,我使用Java中的Scanner获取用户条目,如姓名、姓氏、电子邮件和电话。姓名和姓氏是必需的,但电子邮件和电话不是必需的,用户只需按enter键即可将其保留为空 我想做的是添加一个方法,该方法将验证条目是否为空或长度是否为0,以及是否为空 当用户点击输入时,扫描器将接受空字符串作为有效值 这是我用来验证每个条目长度的方法,如果长度小于或大于最小值或最大值,则显示错误消息 public static String validateString (String msgSoll, String ms

我使用Java中的Scanner获取用户条目,如姓名、姓氏、电子邮件和电话。姓名和姓氏是必需的,但电子邮件和电话不是必需的,用户只需按enter键即可将其保留为空

我想做的是添加一个方法,该方法将验证条目是否为空或长度是否为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;
       }
publicstaticstringvalidatestring(stringmsgsoll、stringmsgerr、,
整数lngMin,整数lngMax){
字符串myString=null;
如果(lngMin>=0&&lngMax>=lngMin){
做{
系统输出打印(msgSoll);
myString=myScanner.nextLine();
if(myString.length()lngMax){
系统输出打印LN(msgErr);
}
}while(myString.length()lngMax);
}
返回myString;
}
如果有人能用这种方法帮助我,我将不胜感激

Thank's

您可以使用(可从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)
作为条件。

您可以使用(可从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)
作为条件。

该方法有什么问题?此方法可以,但只是验证条目的长度。我想做的是添加一个方法,该方法将验证条目是否为空或长度是否为0,如果用户按enter键,则扫描程序将接受空字符串作为有效条目。那么,如果确定,为什么要发布该方法?请在尝试验证的位置发布方法。从你上面的帖子中,我想不出你需要什么,我只是添加了一个else-if语句来检查值是否为空或长度是否为0,并将该条件添加到while循环中,现在它似乎可以工作了。你有没有其他办法让我的代码更好?if(chaine.isBlank()| | chaine.length()==0){chaine=“Empty”}else if(chaine.length()lngMax){System.out.println(msgErr)};这个方法有什么问题?这个方法还可以,但它只是验证条目的长度。我想做的是添加一个方法,该方法将验证条目是否为空或长度是否为0,如果用户按enter键,则扫描程序将接受空字符串作为有效条目。那么,如果确定,为什么要发布该方法?请在尝试验证的位置发布方法。从你上面的帖子中,我想不出你需要什么,我只是添加了一个else-if语句来检查值是否为空或长度是否为0,并将该条件添加到while循环中,现在它似乎可以工作了。你有没有其他办法让我的代码更好?if(chaine.isBlank()| | chaine.length()==0){chaine=“Empty”}else if(chaine.length()lngMax){System.out.println(msgErr)};