【问题标题】:Convert Base 10 to Binary [duplicate]将 Base 10 转换为二进制 [重复]
【发布时间】:2016-04-18 00:41:11
【问题描述】:

通过大量试验和错误,我意识到k 不能增加到输出二进制文件的长度值。因此,在此代码的情况下,k 设置为比 4 (k < 4) 增加 1,因此我只能测试 8 到 15,因为它们的二进制值长度不超过 4。

此外,这些值会向后打印。关于如何解决这两个错误的任何想法? 注释行是当我尝试使用 StringBuilder 但没有成功时。

 Scanner scan = new Scanner(System.in);
 int num = 0;
 int test = scan.nextInt();
 //StringBuilder sb = new StringBuilder();

  for(int i = 0; i < test ; i++) {

    int a = scan.nextInt();
    for( int k = 0; k < 4; k++ )
         {
           num = a / 2;
           int remainder = a % 2;
          //String noodle = Integer.toString(remainder);
          a = num;
          //sb.append(noodle);
          //System.out.print(sb);
          System.out.println(remainder);

        }
    }

【问题讨论】:

    标签: java string binary stringbuilder


    【解决方案1】:

    如果你想让算法这样做,这里是:

    StringBuilder result = new StringBuilder();
    
    while(num > 0) {
        int r = num % 2;
        num /= 2;
        result.append(r.toString());
    }
    System.out.println(result.reverse().toString());
    

    它基本上和你做同样的事情,但一直持续到num = 0。

    【讨论】:

      【解决方案2】:

      使用 k,您实际上是在定义将数字 a 除以多少次。由于需要除法直到 a 变为 0,因此可以使用 a&gt;0 代替 k&lt;4

      for( int k = 0; a > 0; k++ )
           {
             num = a / 2;
             int remainder = a % 2;
            //String noodle = Integer.toString(remainder);
            a = num;
            //sb.append(noodle);
            //System.out.print(sb);
            System.out.println(remainder);
      
          }
      

      顺便说一下,对于十进制(10 进制)数字,二进制表示将是

      Integer.toString(x, 2).

      除此之外,对于八进制和十六进制表示:

      Integer.toString(x, 8) Integer.toString(x, 16)

      【讨论】:

      • 问题是:“关于如何修复这两个错误的任何想法?”。这不是“是否还有一个库函数与我正在编写的尝试学习 Java 的代码相同”。
      • @ErwinBolwidt,对不起,我忽略了。现在答案应该没问题了。
      猜你喜欢
      • 2017-10-20
      • 1970-01-01
      • 2016-05-16
      • 2014-03-28
      • 1970-01-01
      • 1970-01-01
      • 2021-08-09
      • 2011-01-24
      • 1970-01-01
      相关资源
      最近更新 更多