public class TenToTwo{
public void fangFa(int a){
String zYuShu ="";  //最后全部余数
    int sun=a/2;//求第一次除2的商
    int yuShu=a%2;
    //下面这句是什么意思,String类型能和int类型互相赋值吗?好象不行吧?
    //他在yuShu后写了个 +"" 这就行了,这是什么道理?
    zYuShu=yuShu+"";
while(sun>0){
yuShu =sun%2;
sun=sun/2;
//下面这句话也让我不理解
//为什么第二次、第三次循环的时候zYuShu的值不会被覆盖,
//而好象是把第一次循环和第二次循环的结果排列起来了?
zYuShu=yuShu+zYuShu;
}
System.out.println(zYuShu);
}
public static void main(String[]args){
TenToTwo t =new TenToTwo();
t.fangFa(165);
}
}

解决方案 »

  1.   

    public static String tenToTwo(int a)
    {
    StringBuffer strBuf=new StringBuffer();
    if(a>=0)
    {
    while(a/2!=0)
    {
    strBuf.append(a%2);
    a=a/2;
    }
    strBuf.append(a);
    }
    return strBuf.reverse().toString();
    }
      

  2.   

    //他在yuShu后写了个 +"" 这就行了,这是什么道理?
            zYuShu=yuShu+"";
    这是转型,把int转成string//下面这句话也让我不理解
                //为什么第二次、第三次循环的时候zYuShu的值不会被覆盖,
                //而好象是把第一次循环和第二次循环的结果排列起来了?
                zYuShu=yuShu+zYuShu;
    string形的变量连加是在原来的基础上继续加上别的内容,
    如String a=""   ;  a=a+"11";  则a="11"
      

  3.   

    用楼上的比较好。        zYuShu=yuShu+"";
    这句的意思是把yushu变成String 类型的,然后赋值给zYuShu
      

  4.   

    用Integer.toBinaryString(int)吧,结贴率很低你的程序就不看了
      

  5.   

    莫名....
    不是有现成的...
    Integer.toBinaryString(int)
      

  6.   

    还不如改源代码呢
    private static int fangfa(int i) {
    char[] buf = new char[32];
    char[] digits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
    'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
    'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x',
    'y', 'z' };
    int charPos = 32;
    int radix = 1 << 1;
    int mask = radix - 1;
    do {
    buf[--charPos] = digits[i & mask];
    i >>>= 1;
    } while (i != 0); return Integer.parseInt(new String(buf, charPos, (32 - charPos)));
    }