如何检查值是否为Integer类型?

时间:2012-09-24 02:39:40

标签: java integer

我需要检查一个值是否为整数。我找到了这个:How to check whether input value is integer or float?,但是如果我没弄错的话,即使 本身是 ,变量仍然是double类型的变量确实是integer

13 个答案:

答案 0 :(得分:74)

如果输入值可以是整数以外的数字形式,请按

进行检查
if (x == (int)x)
{
   // Number is integer
}

如果传递了字符串值,请使用Integer.parseInt(string_var). 如果转换失败,请确保使用try catch进行错误处理。

答案 1 :(得分:13)

如果你有一个double / float /浮点数,想看看它是否是一个整数。

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

如果你有一个字符串,并想看看它是否是一个整数。最好不要丢弃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;
}

答案 2 :(得分:8)

尝试这种方式

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

答案 3 :(得分:3)

以下是检查字符串是否为整数的函数?

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

答案 4 :(得分:2)

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

x是一个数字原语:shortintlongfloatdouble

答案 5 :(得分:1)

这可行:

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

答案 6 :(得分:1)

要检查String是否包含表示整数的数字字符,可以使用Integer.parseInt()

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

答案 7 :(得分:1)

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

答案 8 :(得分:1)

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

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

答案 9 :(得分:1)

也许这个小课有帮助。我首先想要每隔一个循环跳到下一行,尝试通过检查浮动用于循环,是否为整数除以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,会得到我原本想要的结果。

答案 10 :(得分:0)

Try this snippet of code

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

答案 11 :(得分:0)

你可以使用模数%,解决方案很简单:

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


}
}

答案 12 :(得分:-2)

我始终相信提供算法,以便其他人也能从中受益。

variable v;
if(sizeof(v)==4)
    //integer
else
    //not-integer
相关问题