2016-09-30 69 views
0
public static String DeciToBin(int i) 
{ 
    String zero="0"; 
    String one="1"; 
    String str = ""; 
    if(i==0) 
    { 
     return zero; 
    } 
    if(i==1) 
    { 
     return one; 
    } 
    for(;i<2;i/=2) 
    { 
     if(i%2==1) 
     { 
      str= one+str; 
     } 
     if(i%2==0) 
     { 
      str=zero+str; 
     } 
    } 
    return str; 
} 

當我大於1時什麼也沒有發現。這些行中沒有任何錯誤或警告。我錯過了什麼?數字轉換算法?

+0

假設'i'不爲負,!= 0'和'我!= 1' ,那麼'i <2'立即是錯誤的。使用調試器瀏覽代碼。 –

+0

提示:只有當條件(在你的情況下'i <2')滿足時,for循環纔會繼續。 – Shadov

回答

0

您需要測試是否i>0與否,如果你得到一個數字的2個或更多不會停止。

你可以簡化很多。

public static String deciToBin(int i) { 
    String str = ""; 
    do { 
     str = (i & 1) + str; 
     i >>>= 1; 
    } while (i != 0); 
    return str; 
} 

更妙的是使用StringBuilder

public static String deciToBin(int i) { 
    StringBuilder str = new StringBuilder(); 
    do { 
     str.append(i & 1); 
     i >>>= 1; 
    } while (i != 0); 
    return str.reverse().toString(); 
} 
+0

我是新來的Java ......原諒我的愚蠢...... –

0

您可以用下面的方法在Java INT轉換爲二進制。

Integer.toBinaryString(a); 

如果`我可以用下面的方法在Java中轉換爲int的任何基本

Integer.toString(Number, Base);