2016-09-30 8 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

にint型に変換するためにJavaで次のメソッドを使用することができます!= 0 'と' I!= '1' 'i <2'は直ちに偽です。デバッガでコードをステップ実行します。 –

+0

ヒント:forループは条件(あなたの場合は 'i <2')が満たされている場合にのみ進みます。 – 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; 
} 

さらに良いことは、あなたがバイナリにint型に変換するためにJavaで次のメソッドを使用することができます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

を使用することです。私は `場合

Integer.toBinaryString(a); 

あなたは、i`が負でない`と仮定すると、任意の塩基

Integer.toString(Number, Base); 
関連する問題