我如何检查一个值是不是Integertypes?
我需要检查一个值是一个整数。 我发现这个: 如何检查input值是整数还是浮点数? ,但如果我没有弄错,即使这个值本身确实是一个integer
,variables仍然是double
types的。
如果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"); } } }