在编写Java代码时,我发现了一个非常奇怪的情况:
Integer x = myit.next();
if ((int)x % 2 == 0) {
其中myit是迭代器,x是整数。 我只是想测试x是否是偶数。但是x%2 == 0不起作用,因为eclipse说%没有在Integer上定义。然后我尝试通过显式转换将x转换为int。再一次,它警告我不能以这种方式转换。
出现这种情况的原因是什么,以及测试x是否均匀的正确方法是什么?
更新: 无论如何,我测试下面的代码是否有效,这意味着你们所有人都是对的。
Integer x = 12;
boolean y = ( (x % 2) == 0 );
boolean z = ( (x.intValue() % 2) == 0 );
我认为我之前遇到的问题可能是代码的上下文。这是深夜,如果我发现为什么会发生这种情况,我会稍后更新。
答案 0 :(得分:5)
使用:
if (x.intValue() % 2 == 0)
PS:if(x % 2==0)
也应该有效,因为integer.intValue()
应该在内部调用。
字节代码:if(x % 2==0)
11: invokevirtual #23; //Method java/lang/Integer.intValue:()I --> line of interest
14: iconst_2
15: irem
答案 1 :(得分:2)
x % 2 == 0 does not work since eclipse says % not defined on Integer
事实并非如此。您可以将%
与Integer
看看这个
Integer x = new Integer("6");
if (x % 2 == 0) {
System.out.println(x);
}
Out put:
6
您应该阅读Java
答案 2 :(得分:1)
public static void main(String[] args) {
List<Integer> myList = new ArrayList<Integer>();
myList.add(21);
myList.add(22);
myList.add(41);
myList.add(2);
Iterator<Integer> itr = myList.iterator();
while (itr.hasNext()) {
Integer x = itr.next();
if (x % 2 == 0) {
System.out.println("even");
} else {
System.out.println("odd");
}
}
}
<强>输出强>
odd
even
odd
even
答案 3 :(得分:0)
使用此:
if(((int)x)%2==0){
注意:再多一次(