如何检查变量是不是为整数

Posted

技术标签:

【中文标题】如何检查变量是不是为整数【英文标题】:How to Check Whether a Variable is an Integer or Not如何检查变量是否为整数 【发布时间】:2015-02-25 08:50:26 【问题描述】:

我是 Java 编程新手,我正在尝试学习其中的技巧。我遇到了一个问题,问题源于我无法检查变量是否为整数。

int[] values = new int[3];
private Random rand = new Random();
num1 = rand.nextInt(70);
num2 = rand.nextInt(70);
num3 = rand.nextInt(70);

values[1] = num1 + num2

//we are dividing values[1] by num3 in order to produce an integer solution. For example (4 + 3) / 2 will render an integer answer, but (4 + 3) / 15 will not. 
//The (correct) answer is values[2]

values[2] = values[1]/num3

if (num3 > values[1]) 
     //This is done to ensure that we are able to divide by the number to get a solution (although this would break if values[1] was 1).
     num3 = 2
     while (values[2] does not contain an integer value) 
         increase num3 by 1
        work out new value of values[2]
            
 else 
    while (values[2] does not contain an integer value) 
         increase num3 by 1
        work out new value of values[2] <--- I'm not sure if this step is necessary
    


System.out.println(values[2]);

【问题讨论】:

if (num == (int)num) // 数字是整数 values 的定义位置和方式? How can I check if a value is of type Integer? 的可能重复项 这毫无意义。基元数组需要一个类型。他们只能“持有”这种类型。所以如果你有一个int[],所有的元素都是整数。 【参考方案1】:

另一种方式:

if(value%1 == 0)
  //True if Integer

例如2.34f % 1 将是 0.342f % 1 is 0.0

【讨论】:

【参考方案2】:

以下情况永远不会发生,因为values 数组是原始 int 类型。因此,检查values[2] 是否为 int 是事后的事。 values[]always 包含一个 int 并且尝试将一个非 int 类型的元素添加到 values 数组将导致 ArrayStoreException 被抛出。

如果要分配的值的类型与组件类型不兼容(第 5.2 节),则抛出 ArrayStoreException。

// All three are of type int
num1 = rand.nextInt(70);
num2 = rand.nextInt(70);
num3 = rand.nextInt(70);

// Not possible... 
while (values[2] does not contain an integer value) 

当您初始化 values 数组时,它将自动具有默认值 0

int[] values = new int[3]
System.out.println( Arrays.toString(values) );
> [0,0,0]

【讨论】:

【参考方案3】:

如果你用一个整数除以另一个整数,你总是有一个整数。

你需要模(余数)运算

int num1 = 15;
int num2 = 16;
int num3 = 5;

System.out.println("num1/num3 = "+num1/num3);
System.out.println("num2/num3 = "+num2/num3);
System.out.println("num1%num3 = "+num1%num3);
System.out.println("num2%num3 = "+num2%num3);

如果模不为 0,则结​​果将不是整数。

【讨论】:

【参考方案4】:

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

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

如果正在传递字符串值,请使用 Integer.parseInt(string_var)。

【讨论】:

【参考方案5】:

您可以使用 instanceof 运算符来检查给定对象是否为整数。

if(num instanceof Integer)
    System.out.println("Number is an integer");

【讨论】:

【参考方案6】:
if(value == (int) value)

或长(64位整数)

if(value == (long) value)

或者可以安全地用浮点数表示而不会损失精度

if(value == (float) value)

如果传递的是字符串值,使用Integer.parseInt(value);如果传递的输入是正确的整数,它将返回一个整数。

【讨论】:

以上是关于如何检查变量是不是为整数的主要内容,如果未能解决你的问题,请参考以下文章

如何检查我的双变量是不是为整数? [复制]

PHP检查变量是不是为整数

如何使用 Python 在 Selenium WD 中检查变量的值是不是为整数? [复制]

有没有办法检查变量是不是为整数? C++

Scala:在scala中检查变量是不是为整数

检查浮点变量是不是为整数的最可靠方法是啥?