在java中将int转换为字符串的答案为1

时间:2015-12-18 15:50:02

标签: java string binary int

我将十进制整数转换为二进制,当我尝试转换为字符串时,该二进制整数在给出字符串值时总是给出1作为答案。

         while(a>0) 
         {
             b = a%2;
             n = b;
             a = a/2;
         System.out.print(n);
         }

        String m = Integer.toString(n);
         System.out.print(m);

非常感谢任何更正和建议。

谢谢!

2 个答案:

答案 0 :(得分:4)

在每个循环步骤中,您都有以下两个语句:

b = a % 2;
n = b;

考虑为什么n的所有可能值都是01

这是因为n复制了b的值,这是a modulo 2的值,始终为01

n的最后一个值将是a的二进制表示的最左侧位,始终为1(除非a为{{1}这就是为什么在打印0时总是得到1

答案 1 :(得分:2)

使用时

n = b;

您每次都要替换n的值。你想要它积累n中的位。最简单的方法是使用StringBuilder。

StringBuilder sb = new StringBuilder();
while (a > 0) {
    int lowest = a & 1;
    sb.insert(0, lowest);
    a = a >>> 1; // shift the bits down by 1.
}

String m = sb.toString();
System.out.print(m);

这与Integer.toString(a, 2)

的作用相同