标签: integer

Java:整数等于==

从Java 1.5中,你几乎可以互换Integer使用int在许多情况下.

但是,我发现我的代码中存在一个潜在的缺陷让我感到有些惊讶.

以下代码:

Integer cdiCt = ...;
Integer cdsCt = ...;
...
if (cdiCt != null && cdsCt != null && cdiCt != cdsCt)
    mismatch = true;
Run Code Online (Sandbox Code Playgroud)

虽然我无法确定在什么情况下,但是当值相等时,似乎错误地设置了不匹配.我在Eclipse中设置了一个断点,看到这些Integer值都是137,我检查了布尔表达式并且它说它是假的,但当我跨过它时,它设置不匹配为真.

将条件更改为:

if (cdiCt != null && cdsCt != null && !cdiCt.equals(cdsCt))
Run Code Online (Sandbox Code Playgroud)

解决了这个问题.

有谁可以解释为什么会这样?到目前为止,我只在自己的PC上看到了我的localhost上的行为.在这种特殊情况下,代码成功地通过了大约20次比较,但在2次失败.问题始终可以重现.

如果这是一个普遍的问题,它应该导致我们的其他环境(开发和测试)出错,但到目前为止,没有人在执行此代码片段的数百次测试后报告该问题.

==用于比较两个Integer值仍然不合法吗?

除了下面的所有精细答案之外,以下stackoverflow链接还有相当多的附加信息.它实际上已经回答了我原来的问题,但因为我没有在我的问题中提到自动装箱,所以它没有出现在选定的建议中:

为什么编译器/ JVM不能让autoboxing"正常工作"?

java primitive integer wrapper equals-operator

142
推荐指数
5
解决办法
15万
查看次数

从整数列表中获取最接近给定值的数字

给定一个整数列表,我想找到哪个数字最接近我输入的数字:

>>> myList = [4, 1, 88, 44, 3]
>>> myNumber = 5
>>> takeClosest(myList, myNumber)
...
4
Run Code Online (Sandbox Code Playgroud)

有没有快速的方法来做到这一点?

python sorting integer list

142
推荐指数
5
解决办法
15万
查看次数

Python:TypeError:无法连接'str'和'int'对象

我有这个python程序,它将字符串添加到整数:

a = raw_input("Enter a: ")
b = raw_input("Enter b: ")
print "a + b as strings: " + a + b
a = int(a)
b = int(b)
c = a + b
str(c)
print "a + b as integers: " + c
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Python: TypeError: cannot concatenate 'str' and 'int' objects
Run Code Online (Sandbox Code Playgroud)

如何将字符串添加到整数?

python printing string integer

141
推荐指数
4
解决办法
30万
查看次数

用于将整数转换为字符串C++的itoa()的替代方案?

我想知道是否存在itoa()将整数转换为字符串的替代方法,因为当我在visual Studio中运行它时会收到警告,当我尝试在Linux下构建程序时,我收到编译错误.

c++ integer stdstring itoa

140
推荐指数
10
解决办法
28万
查看次数

确定整数位数的有效方法

什么是一个非常有效的确定多少位有在C++中的整数的方法吗?

c++ integer digits

138
推荐指数
10
解决办法
22万
查看次数

Visual Studio调试器 - 以十六进制显示整数值

我正在使用Visual Studio 2008,我刚刚注意到当我将鼠标悬停在变量上以及在即时窗口中时,调试器将整数值显示为十六进制.我想我必须意外地碰到一个快捷键或什么的.

以前有人有吗?如何将其设置为以十进制显示?

debugging hex integer visual-studio-2008

138
推荐指数
6
解决办法
7万
查看次数

为什么在C中写入1000,000,000作为1000*1000*1000?

在Apple创建的代码中,有这一行:

CMTimeMakeWithSeconds( newDurationSeconds, 1000*1000*1000 )
Run Code Online (Sandbox Code Playgroud)

没有任何理由来表达1,000,000,0001000*1000*1000

为什么不1000^3呢?

c integer objective-c literals

136
推荐指数
6
解决办法
1万
查看次数

为什么Java认为从10到99的所有数字的乘积都是0?

以下代码块将输出设为0.

public class HelloWorld{

    public static void main(String []args){
        int product = 1;
        for (int i = 10; i <= 99; i++) {
            product *= i;
        }
        System.out.println(product);
    }
}
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么会这样吗?

java integer integer-overflow

132
推荐指数
8
解决办法
3万
查看次数

确定变量是否在范围内?

我需要编写一个循环来执行以下操作:

if i (1..10)
  do thing 1
elsif i (11..20)
  do thing 2
elsif i (21..30)
  do thing 3
etc...
Run Code Online (Sandbox Code Playgroud)

但到目前为止,在语法方面走错了道路.

ruby conditional integer range

130
推荐指数
8
解决办法
8万
查看次数

将整数转换为字节数组(Java)

将一个转换Integer成一个快速的方法是Byte Array什么?

例如 0xAABBCCDD => {AA, BB, CC, DD}

java arrays byte integer

129
推荐指数
5
解决办法
24万
查看次数