How can I check if a value is of type Integer?

JavaInteger

Java Problem Overview


I need to check if a value is an integer. I found this: https://stackoverflow.com/questions/4727569/how-to-check-whether-input-value-is-integer-or-float, but if I'm not mistaken, the variable there is still of type double even though the value itself is indeed an integer.

Java Solutions


Solution 1 - Java

If input value can be in numeric form other than integer , check by

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

If string value is being passed , use Integer.parseInt(string_var). Please ensure error handling using try catch in case conversion fails.

Solution 2 - Java

If you have a double/float/floating point number and want to see if it's an integer.

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;
}

If you have a string and want to see if it's an integer. Preferably, don't throw out the Integer.valueOf() result:

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

If you want to see if something is an Integer object (and hence wraps an int):

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

Solution 3 - Java

if (x % 1 == 0)
    // x is an integer

Here x is a numeric primitive: short, int, long, float or double

Solution 4 - Java

Try maybe this way

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");
}

But all numbers outside Integers range (like "-1231231231231231238") will be treated as doubles. If you want to get rid of that problem you can try it this way

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");
}

Solution 5 - Java

You should use the instanceof operator to determine if your value is Integer or not;

Object object = your_value;

if(object instanceof Integer) {

Integer integer = (Integer) object ;

} else {
 //your value isn't integer
}

Solution 6 - Java

Here is the function for to check is String is Integer or not ?

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

Solution 7 - Java

This can work:

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");
}

Solution 8 - Java

To check if a String contains digit character which represent an integer, you can use Integer.parseInt().

To check if a double contains a value which can be an integer, you can use Math.floor() or Math.ceil().

Solution 9 - Java

You need to first check if it's a number. If so you can use the Math.Round method. If the result and the original value are equal then it's an integer.

Solution 10 - Java

this is the shortest way I know with negative integers enabled:

Object myObject = "-1";

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

And this is the way with negative integers disabled:

Object myObject = "1";

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

Solution 11 - Java

Try this snippet of code

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

Solution 12 - Java

You can use modulus %, the solution is so simple:

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");
	}
	

}
}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionVoldemortView Question on Stackoverflow
Solution 1 - JavaMudassir HasanView Answer on Stackoverflow
Solution 2 - JavaRyan AmosView Answer on Stackoverflow
Solution 3 - JavaGayan WeerakuttiView Answer on Stackoverflow
Solution 4 - JavaPshemoView Answer on Stackoverflow
Solution 5 - JavaAndrei AmarfiiView Answer on Stackoverflow
Solution 6 - JavaYasir Shabbir ChoudharyView Answer on Stackoverflow
Solution 7 - JavaRavindra BagaleView Answer on Stackoverflow
Solution 8 - JavaCode-ApprenticeView Answer on Stackoverflow
Solution 9 - JavaAmjad AbdelrahmanView Answer on Stackoverflow
Solution 10 - Javaaugust0490View Answer on Stackoverflow
Solution 11 - JavaDaniel ChangView Answer on Stackoverflow
Solution 12 - JavaAli.GhodratView Answer on Stackoverflow