Java 将基数10转换为二进制

Java 将基数10转换为二进制,java,string,binary,stringbuilder,Java,String,Binary,Stringbuilder,通过大量的尝试和错误,我意识到k不能增加到输出二进制文件的长度值。因此,在这个代码的情况下,k被设置为增量小于4(k

通过大量的尝试和错误,我意识到
k
不能增加到输出二进制文件的长度值。因此,在这个代码的情况下,
k
被设置为增量小于4
(k<4)
,因此我只能测试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);

        }
    }
Scanner scan=新的扫描仪(System.in);
int num=0;
int test=scan.nextInt();
//StringBuilder sb=新的StringBuilder();
对于(int i=0;i
使用k实际上定义了将数字a除以多少次。当你需要除法直到a变成0时,你可以使用
a>0
而不是
k使用k,你实际上是在定义你将除数a的次数。由于需要进行除法,直到a变为0,如果希望算法执行此操作,可以使用
a>0
而不是
k,如下所示:

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。

如果您希望算法执行此操作,请参见:

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。

从这里重复回答:问题是:“有没有关于如何修复这两个错误的想法?”。它不是“还有一个库函数,它的功能与我为学习Java而编写的代码相同”。@ErwinBolwidt,很抱歉我忽略了它。现在答案应该是好的。从这里复制答案:问题是:“关于如何修复这两个错误有什么想法吗?”。它不是“还有一个库函数,它的功能与我为学习Java而编写的代码相同”。@ErwinBolwidt,很抱歉我忽略了它。现在答案应该是好的。