【问题标题】:Converting int to string in java is giving the answer as 1在java中将int转换为字符串给出的答案是1
【发布时间】:2016-03-25 09:06:52
【问题描述】:

我将十进制整数转换为二进制,当我尝试转换为字符串时,二进制整数总是给我 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);

任何更正和建议将不胜感激。

谢谢!

【问题讨论】:

  • 我不明白你期待看到什么,“一”这个词??
  • 我认为你想要 n += b 而不是 n = b
  • @ControlAltDel 这会给你 bitCount()。
  • String m = Integer.toString(a, 2); System.out.print(m);
  • @smoggers 我想说的是,例如,如果我取 a=13,我将得到 n=1011 作为输出(这是相反的,但这就是现在的问题)。因此,当我将此整数值 n 转换为字符串时,而不是显示“1011”,它给我 1 作为输出。

标签: java string binary int


【解决方案1】:

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

b = a % 2;
n = b;

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

这是因为n复制了b的值,也就是a modulo 2的值,总是01

n 的最后一个值将是a 二进制表示的最左边位,它始终是1(除非a0),这就是为什么你总是得到1 打印时m

【讨论】:

  • 所以基本上只存储了 n 的最后一个值?好的,知道了,谢谢!
【解决方案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)做同样的事情

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-03
    • 2020-08-02
    • 1970-01-01
    • 2012-10-02
    • 1970-01-01
    • 2015-01-29
    • 1970-01-01
    相关资源
    最近更新 更多