Java Scanner输入仅接受数字

时间:2014-05-09 15:34:10

标签: java numbers java.util.scanner

我正在尝试在这里创建这个小程序,我无法让它工作。我有两个主要的双打( prvi drugi ),如果双重转换为字符串(ether double prvi或drugi)包含任何字母或符号打印一些,我想制作文本,如果两个双打包含数字,那么我在那里做我的代码

这是我试过的:

    Scanner sk = new Scanner(System.in);
        double prvi, drugi;

        System.out.println("Insert num: ");
        prvi = sk.nextDouble();

        System.out.println("Insert 2nd num: ");
        drugi = sk.nextDouble();

        String prviStr = String.valueOf(prvi);
        String drugiStr = String.valueOf(drugi);

        System.out.println("====================");

        if (prviStr.matches("[a-zA-Z]+") || drugiStr.matches("[a-zA-Z]+"))
            System.out.println("Only numbers!");

        else if (prviStr.matches("[0-9]+") && drugiStr.matches("[0-9]+")) {
            // I do my code here if both inputs are numbers 
         }

2 个答案:

答案 0 :(得分:4)

当您使用nextDouble()时,您要求扫描仪对象仅接受有效的双输入。如果您想接受字符串,只需使用next()即可。更改如下所示的行。

System.out.println("Insert num: ");
prvi = sk.next();

System.out.println("Insert 2nd num: ");
drugi = sk.next();

答案 1 :(得分:0)

使用try-catch覆盖您的语句并在sk返回异常时打印错误(如果您输入其他内容然后输入double)。您不再需要将其转换为字符串或以这种方式使用正则表达式。

    Scanner sk = new Scanner(System.in);
    double prvi=0, drugi=0;

    try{
        System.out.println("Insert num: ");
        prvi = sk.nextDouble();

        System.out.println("Insert 2nd num: ");
        drugi = sk.nextDouble();
    }catch(Exception e){
        System.out.println("Only numbers!");
    }
    // Your code here