下面是代码:
Scanner scan = new Scanner(System.in);
String input = scan.next();
try{
double isNum = Double.parseDouble(input);
if(isNum == Math.floor(isNum)) {
System.out.println("Input is Integer");
//enter a double again
}else {
System.out.println("Input is Double");
//break
}
} catch(Exception e) {
if(input.toCharArray().length == 1) {
System.out.println("Input is Character");
//enter a double again
}else {
System.out.println("Input is String");
//enter a double again
}
}
从此处获取:如何检查用户输入的数据类型有效性(Java Scanner类)
但是,当我输入1.0或0.0时,仍将其视为整数,是否将1.0视为双精度?
请大家帮忙,谢谢!
如果你要正确对待1.0
作为Double
一个1
作为Integer
,你需要与工作input
变量,它的类型的String
。
Java将始终Double x = 1
以Double y = 1.0
(含义1
是有效Double
)相同的方式对待,因此您将无法通过代码来区分它们。
由于您具有输入的原始字符串表示形式,因此请使用正则表达式或其他验证进行检查。例如,用于double的示例正则表达式模式看起来像是"[0-9]+(\.){0,1}[0-9]*"
整数,"[0-9]+"
或者"\d+"
这是一个例子:
final static String DOUBLE_PATTERN = "[0-9]+(\.){0,1}[0-9]*";
final static String INTEGER_PATTERN = "\d+";
Scanner scan = new Scanner(System.in);
String input = scan.next();
if (Pattern.matches(INTEGER_PATTERN, input)) {
System.out.println("Input is Integer");
//enter a double again
} else if (Pattern.matches(DOUBLE_PATTERN, input)) {
System.out.println("Input is Double");
//break
} else {
System.out.println("Input is not a number");
if (input.length == 1) {
System.out.println("Input is a Character");
//enter a double again
} else {
System.out.println("Input is a String");
//enter a double again
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句