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,很抱歉我忽略了它。现在答案应该是好的。