我想区分int / float / string输入,我试图读取
的输入Scanner scan = new Scanner(System.in);
这提供了字符串格式的输入,如果我想检查输入是整数/浮点数还是字符串,我该怎么办? 我做了类似的事情
try{
float i = Float.parseFloat(scan.nextLine());
if(i%1==0){
then it is integer
}else{
it is float
}
}catch (NumberFormatException e)
something else, may be string
}
但是java是否提供了以编程方式识别输入是否为string / int / float的方法或方法。
答案 0 :(得分:1)
而不是读取 String ,然后将其解析为 Float ,然后检查它是否为整数。
您只需使用Scanner类的 hasNext 功能,如下所示为整数。
if(sc.hasNextInt()){
int n = sc.nextInt();
System.out.println("n... "+n);
}
如您想要完全匹配,可以尝试以下方法:
String str = sc.nextLine();
try{
int a = Integer.parseInt(str.trim());
System.out.println("It's Integer");
}catch(Exception ex)
{
try{
Float f = Float.parseFloat(str.trim());
System.out.println("It's Float");
}catch(Exception e){
System.out.println(str);
}
}
答案 1 :(得分:0)
据我所知,没有什么可以提供直接检查。
您可以使用Integer.parseInt并捕获NumberFormatException。该异常告诉您它不是整数。 同样,usr Float.parseFloat。如果两者都抛出异常,则输入为字符串。
答案 2 :(得分:0)
您可以在hasNextFoo
中使用Scanner
方法。例如,
if(scan.hasNextInt()){
System.out.println(scan.nextInt() + " is int");
}else if(scan.hasNextFloat()){
System.out.println(scan.nextFloat() + " is float");
}else{
System.out.println(scan.next() + " is String");
}
答案 3 :(得分:0)
java.util.Scanner
类具有验证用户输入是否为某种类型的方法
Scanner userInput = new Scanner(System.in);
boolean hasNextInt = userInput.hasNextInt();
如果用户输入了整数,则返回true。
boolean hasNextDouble = userInput.hasNextDouble();
System.out.println(hasNextDouble);
如果用户输入double,则返回true。否则为假
答案 4 :(得分:0)
扫描仪类有couple of methods,您可以使用它来确定下一个元素的类型。
hasNextBigDecimal()
hasNextBigInteger()
hasNextBoolean()
hasNextByte()
hasNextDouble()
hasNextFloat()
hasNextInt()
hasNextLine()
hasNextLong()
hasNextShort()
你可以像
一样使用它们if(sc.hasNextInt()) {
System.out.println(sc.nextInt() + " is an Integer.");
}
else if(sc.hasNextBoolean()) {
System.out.println(sc.nextBoolean() + " is a Boolean.");
}