使用 While 循环时转换为二进制的问题

Issues Converting to Binary While Using a While Loop

我目前正在尝试解决 java 中的二进制间隙问题,并首先尝试使用 while 循环将十进制转换为二进制。我正在用不同的十进制输入测试它,但在逐步执行它之后注意到,在最后一个循环中我得到整数溢出而不是附加 1,(或者至少我认为我是,它从 100010000 到 411065418,我假设是因为它乘以 100010000 *10)

我试着单步执行它,这是我目前的代码:

public class BinaryGap {
     public static void main(String[] args) {
        // write your code in Java SE 8
        int decimal = 529;
        int ans =0; 
        //returns the number in binary but in big endian form
        while(decimal != 0){
            ans += (decimal % 2);
            ans *= 10; 
            decimal /=2;             
          }
    }
}

如能指出我的思路错误之处,将不胜感激

您的代码在概念上工作正常 - 但变量 'ans' 满足 int 的限制 - 2147483647。
当将 +1 添加到此值时 - 变量溢出并变为最小值。
为了克服它,你可以使用 type 'String' for 'ans' 变量,并对代码进行小的调整:

int decimal = 529;
String ans = "";
//returns the number in binary but in big endian form
while(decimal != 0){
    ans += (decimal % 2);
    decimal /=2;
}