Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中拒绝空白作为输入_Java - Fatal编程技术网

如何在java中拒绝空白作为输入

如何在java中拒绝空白作为输入,java,Java,我试图创建一个代码,拒绝只包含空格/空格的答案。到目前为止,我已经编写了一个代码来拒绝空输入,但是一旦用户输入空格,程序就会接受它 我如何防止这种情况?谢谢大家! do { while(true) { System.out.print("Dog's name: "); String dogName = null; dogName = scan.nextLine().toLowerCase();

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

我如何防止这种情况?谢谢大家!

    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;   
            }
在这种情况下,trim()方法非常方便。从:

返回字符串的副本,包括前导和尾随空格 省略

您可以这样使用它:

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;
    }
}
在这种情况下,trim()方法非常方便。从:

返回字符串的副本,包括前导和尾随空格 省略

您可以这样使用它:

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

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

           if (dogName.matches("^\\s*$") || dogName.isEmpty()) {
                System.out.println("Error: Name can't be empty.");
                continue;
            }

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

           if (dogName.matches("^\\s*$") || dogName.isEmpty()) {
                System.out.println("Error: Name can't be empty.");
                continue;
            }
trim()将删除前导和尾随的空格,如果整个字符串都是由空格组成的,那么这将替换全部并留下一个空字符串。e、 g

“狗”->“狗”

“狗名”->“狗名”

如果检查空/空白将很常见,那么请查看StringUtils.isNotBlank中的“灵感”,并根据这些内容编写自己的静态util方法

dogName.trim()将删除前导空格和尾随空格,如果整个字符串由空格组成,则将替换所有空格并留下一个空字符串。e、 g

“狗”->“狗”

“狗名”->“狗名”


如果检查空/空白将很常见,那么请查看StringUtils.isNotBlank中的“灵感”,并根据这些内容编写自己的静态util方法

一个简单的解决方案,用

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

一个简单的解决方案,用

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

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

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

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

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

n
是删除空格的字符串。您只需检查
是否(n.isEmpty())
n
是删除空格的字符串。您只需检查
if(n.isEmpty())
。它只会删除前导空格和training空格。如果字符串仅包含空格,则所有空格都是前导空格和尾随空格,因此结果是空字符串。这也会更改(修剪)有效输入。就狗的名字而言,这可能无关紧要,除非你有一只叫“Fido”的狗,它前面或后面有空格。如果您使用此代码,您应该注意这一点。它将仅删除前导空格和尾随空格。如果字符串仅包含空格,则所有空格都是前导空格和尾随空格,因此结果是空字符串。这也将更改(修剪)有效输入。就狗的名字而言,这可能无关紧要,除非你有一只叫“Fido”的狗,它前面或后面有空格。如果您使用此代码,您应该知道这一点。