您好我想在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
答案 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
区域设置将使用点,任何其他使用十进制数字点分隔符的区域设置也是如此。