繁体   English   中英

当要求用户在Java中循环输入一些字符串时,如何仅保留文本打印一次

[英]How to keep Text print only once when asking a user to re-enter some string in loop in Java

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

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

    while(validateNum(firstNum) == false) {
        System.out.print("Please, enter number only: ");
        firstNum = scan.next();
    }

这是validateNum方法:

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

但是问题是,当我测试它并输入一些带有空格的文本时,它会打印“请仅输入一个数字”,这是输入字符串中出现的空格的次数。 我试图从字符串中删除空格,然后检查它,但它仍然可以打印出许多文字。

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

这是Scanner类及其方法的文档

简而言之:

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

nextLine() :扫描整行

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM