我正在解决一个面试问题,即编写一个方法,在不使用+运算符的情况下添加两位数。
我非常了解算法,我可以在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中的替代方法是什么?
感谢。
答案 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)