Java中while(0)或while(1)的替代方法是什么?

时间:2014-06-23 14:42:44

标签: java c bit-manipulation

我正在解决一个面试问题,即编写一个方法,在不使用+运算符的情况下添加两位数。

我非常了解算法,我可以在C中轻松完成。

这是算法,它完美地运作:

int add(int x, int y) {
int a, b;
do {
    a = x & y;           
    b = x ^ y; 
    x = a << 1; 
    y = b;
} while (a);
  return b;
}

我尝试将此代码转换为Java,但是这个算法起作用,因为a将在一个点上变为000,在C中将在while循环中等于False。 Java中的替代方法是什么?

感谢。

2 个答案:

答案 0 :(得分:5)

您需要在Java中使用布尔值:

while (a != 0)

编辑(完整代码):

int add(int x, int y) {
int a, b;
do {
    a = x & y;           
    b = x ^ y; 
    x = a << 1; 
    y = b;
} while (a != 0);
return b;
}

答案 1 :(得分:1)

Java不像C语言那样将0解释为false。如我的评论中所述,您必须使用布尔表达式,例如:

while (a != 0)