我如何检查一个值是不是Integertypes?

我需要检查一个值是一个整数。 我发现这个: 如何检查input值是整数还是浮点数? ,但如果我没有弄错,即使这个本身确实是一个integer ,variables仍然是doubletypes的。

如果input值可以是除整数以外的数字forms,请检查

 if (x == (int)x) { // Number is integer } 

如果正在传递string值,请使用Integer.parseInt(string_var). 如果转换失败,请确保使用try catch进行error handling。

如果你有一个双/浮点/浮点数,并想看看它是一个整数。

 public boolean isDoubleInt(double d) { //select a "tolerance range" for being an integer double TOLERANCE = 1E-5; //do not use (int)d, due to weird floating point conversions! return Math.abs(Math.floor(d) - d) < TOLERANCE; } 

如果你有一个string,并想看看它是一个整数。 最好不要抛出Integer.valueOf()结果:

 public boolean isStringInt(String s) { try { Integer.parseInt(s); return true; } catch (NumberFormatException ex) { return false; } } 

如果你想看看是否是一个Integer对象(因此包装一个int ):

 public boolean isObjectInteger(Object o) { return o instanceof Integer; } 

试试也许这样

 try{ double d= Double.valueOf(someString); if (d==(int)d){ System.out.println("integer"+(int)d); }else{ System.out.println("double"+d); } }catch(Exception e){ System.out.println("not number"); } 

但是整数范围以外的所有数字(如“-1231231231231231238”)将被视为双打。 如果你想摆脱这个问题,你可以尝试这种方式

 try { double d = Double.valueOf(someString); if (someString.matches("\\-?\\d+")){//optional minus and at least one digit System.out.println("integer" + d); } else { System.out.println("double" + d); } } catch (Exception e) { System.out.println("not number"); } 

您应该使用instanceof运算符来确定您的值是否为整数;

Object object = your_value;

 if(object instanceof Integer) { Integer integer = (Integer) object ; } else { //your value isn't integer } 

这里是检查的function是string是整数还是不是?

 public static boolean isStringInteger(String number ){ try{ Integer.parseInt(number); }catch(Exception e ){ return false; } return true; } 

要检查一个string是否包含代表整数的数字字符,可以使用Integer.parseInt()

要检查double是否包含可以是整数的值,可以使用Math.floor()Math.ceil()

这是我知道启用负整数的最短path:

 Object myObject = "-1"; if(Pattern.matches("\\-?\\d+", (CharSequence) myObject);)==true) { System.out.println("It's an integer!"); } 

这是禁用负整数的方式:

 Object myObject = "1"; if(Pattern.matches("\\d+", (CharSequence) myObject);)==true) { System.out.println("It's an integer!"); } 

你需要先检查一下是否是一个数字。 如果是这样,你可以使用Math.Round方法。 如果结果和原始值相等,那么它是一个整数。

试试这段代码

 private static boolean isStringInt(String s){ Scanner in=new Scanner(s); return in.hasNextInt(); } 

这可以工作:

 int no=0; try { no=Integer.parseInt(string); if(string.contains(".")) { if(string.contains("f")) { System.out.println("float"); } else System.out.println("double"); } } catch(Exception ex) { Console.WriteLine("not numeric or string"); } 

也许这个小class有帮助。 我首先想要每隔一个循环就跳到下一行,试着通过检查用来循环的float是否是一个整数,除以2.最后,它给了我这个代码:

 public class Test { private static int sequencesPerLine = 20; private static int loops = 6400; private static long number = 999999999999999999L; public static void main(String[] args) { for (float i=0; i<loops; i++) { int integer = (int) i / sequencesPerLine; if (i / sequencesPerLine == integer) { System.out.print("\n"); } System.out.print(number); } } } 

sequencesPerLine是在跳到下一行之前打印number 。 将sequencesPerLine更改为2将给出我最初寻找的结果。

您可以使用模数%,解决scheme如此简单:

 import java.text.DecimalFormat; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("Enter first number"); Double m = scan.nextDouble(); System.out.println("Enter second number"); Double n= scan.nextDouble(); if(m%n==0) { System.out.println("Integer"); } else { System.out.println("Double"); } } }