在Java中将Integer转换为int

时间:2014-09-17 06:46:01

标签: java integer

在编写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 );

我认为我之前遇到的问题可能是代码的上下文。这是深夜,如果我发现为什么会发生这种情况,我会稍后更新。

4 个答案:

答案 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

中的Integer

答案 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){

注意:再多一次(