Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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_String_Loops_Java.util.scanner - Fatal编程技术网

在Java中,当要求用户在循环中重新输入某个字符串时,如何只打印一次文本

在Java中,当要求用户在循环中重新输入某个字符串时,如何只打印一次文本,java,string,loops,java.util.scanner,Java,String,Loops,Java.util.scanner,我想让用户在字符串类型中输入一个数字,然后检查它是否是数字,如果不是,然后再次要求重新输入字符串。我有这样一个代码: System.out.print("Enter first number: "); firstNum = scan.next(); while(validateNum(firstNum) == false) { System.out.print("Please, enter number only: "); firstNu

我想让用户在字符串类型中输入一个数字,然后检查它是否是数字,如果不是,然后再次要求重新输入字符串。我有这样一个代码:

    System.out.print("Enter first number: ");
    firstNum = scan.next();

    while(validateNum(firstNum) == false) {
        System.out.print("Please, enter number only: ");
        firstNum = scan.next();
    }
下面是ValidateEnum方法:

    private static boolean validateNum(String num) {
        if (num.matches("[-+]?[0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?")){
            return true;
        }
        return false;
    }

但问题是,当我测试它并输入一些带有空格的文本时,它会打印“请,只输入一个数字”,这是输入字符串中空格数量的两倍。我尝试从字符串中删除空格,然后检查它,但它仍然会显示许多打印。

您正在使用
scan.next()
。这将返回空格之前的内容。您希望
scan.nextLine()
扫描用户输入的整行内容

下面是
扫描器
类及其方法的示例

简言之:

next()
:扫描下一个完整的令牌


nextLine()。这将返回空格之前的内容。您希望
scan.nextLine()
扫描用户输入的整行内容

下面是
扫描器
类及其方法的示例

简言之:

next()
:扫描下一个完整的令牌

nextLine()
:扫描整行

如果(x==false)或如果(x==true)首先不做
如果(x==false)或如果(x==true)首先不做