知道用户是否用扫描仪给出数字或字符串(java)

时间:2017-11-08 10:10:55

标签: java

您好我想在java中做点什么。 我有一个扫描仪,如果用户给我们一个号码,我会做一些事情,如果它是一个字符串我做其他事情。 它可以使用,但不是我想要的,因为当我给出一个类似于12的int时,java知道它是一个数字但是当我给出类似12.5的东西时,他认为它是字符串。

Scanner in = new Scanner(System.in);
        if(in.hasNextDouble()){
            System.out.println("number");
        }else if(in.hasNextLine()){
            System.out.println("text");
        }

THX

2 个答案:

答案 0 :(得分:2)

您可以使用正则表达式验证输入:

Scanner in = new Scanner(System.in);
String line = in.nextLine();
Pattern p = Pattern.compile("[0-9]+([.]([0-9]+))?");
if(p.matcher(line).matches()){
    System.out.println("number");
} else {
    System.out.println("text");
}

答案 1 :(得分:0)

为扫描仪定义一个本地,告诉它使用哪种十进制格式

 // change the locale of the scanner
   in.useLocale(Locale.ENGLISH);

默认情况下,无论将哪个区域设置为JVM的默认区域,因此如果定义为使用逗号分隔符,则可以在扫描仪输入中进行此操作。 设置ENGLISH区域设置将使用点,任何其他使用十进制数字点分隔符的区域设置也是如此。