用java写一个 十进制转为二进制的程序

怎么写呢?这是我写的 可是10输出的是111啊 什么问题呢?
public class Demo
{
public static void main(String[] args)
{
int bb[]=new int[4];
for(int x=0;x<4;x++)
{
for(int a=10;a>0;a/=2)
{
bb[x]=a%2;
}
}
for(int x=3;x>0;x--)
{
System.out.print(bb[x]);
}
System.out.println(1%2);*/
}
}

将十进制转换成二进制的算法如下:
1.给定一个数;
2.根据十进制转换二进制的思想:把这个数除以2若为单数则为1,为偶数则为0,直到最后一个数为1为止。所以我们要做的就是用你给定的这个数除以2,如果结果为奇数则r=1,否则r=0;如此循环下去,直到这个数〉=1。
3.然后把r的值送到一个数组里面。最后把这个数组里面的内容从后面打印出来就可以了。

import java.util.Scanner;

public class Hi {

public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个十进制需要转换为二进制的正整数");
int n=sc.nextInt();
int r;
int i=0;
int[] a=new int[20];
do{
if(n%2==1)
r=1;
else
r=0;
a[i]=r;
n/=2;
i++;
}while(n>0);

System.out.println("十进制转换为二进制後:");
for(int j=i-1;j>=0;j--){
System.out.print(a[j]);
}
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-10-06
for(int x=0;x<4;x++)
{
for(int a=10;a>0;a/=2)
{
bb[x]=a%2;
}
}//这样取的每次都是末尾的一位因为你每次的值都将前一个值覆盖了
可以这样写
public class ToB
{
public static void main(String[] args)
{
int bb[]=new int[4];

for(int x=0,a=10;a>0&&x<4;a/=2)
{
bb[x++]=a%2;

}
for(int x=3;x>=0;x--)
{
System.out.print(bb[x]);
}
System.out.println();
int b=10;
System.out.println(Integer.toBinaryString(b));
}
}

经测试完全符合你的要求 希望对你有帮助!谢谢
第2个回答  推荐于2017-12-16
for(int x=0;x<4;x++)
{
for(int a=10;a>0;a/=2)
{
bb[x]=a%2;
}
}//这样取的每次都是末尾的一位因为你每次的值都将前一个值覆盖了
可以这样写
public class ToB
{
public static void main(String[] args)
{
int bb[]=new int[4];

for(int x=0,a=10;a>0&&x<4;a/=2)
{
bb[x++]=a%2;

}
for(int x=3;x>=0;x--)
{
System.out.print(bb[x]);
}
System.out.println();
int b=10;
System.out.println(Integer.toBinaryString(b));
}
}

经测试完全符合你的要求 希望对你有帮助!谢谢追问

后面这些应该是你的测试程序吧!!! 哈哈
System.out.println();
int b=10;
System.out.println(Integer.toBinaryString(b));

还有经过你的点拨 我明白了 非常感谢!!!

本回答被网友采纳
相似回答