0

Decimal を Binary に変換するメソッドを作成しようとしています。ここに私がこれまでに書いたものがあります(正しく機能していません):

public static String D2B(int decimal){
    String binaryValue="";
    for (int tempDecimal=decimal;0==tempDecimal;tempDecimal/=2){
        binaryValue=tempDecimal%2+binaryValue;
    }
    return binaryValue;
} 


public static void main(String[]args){
    int myValue=127;
    System.out.println(D2B(myValue));
}
4

1 に答える 1

2

あなたのループの条件が間違っていると思います:

for(int tempDecimal=decimal;0==tempDecimal;tempDecimal/=2)

これは、tempDecimal が 0 に等しい間はループすることに注意してください。つまり、ループはゼロ以外の入力に対してはまったくループしてはならず、ゼロ入力に対しては永久にループします。のように書き換えてみてください。

for(int tempDecimal = decimal; 0 != tempDecimal; tempDecimal /= 2)

また、入力としての 0 と入力としての負の数に注意してください。現在のアプローチでは正しく表示されません。

その他のいくつかのマイナーなニット:

  • 読みやすくするために、コードを正しくインデントし、演算子の間にスペースを入れることを強くお勧めします。これにより、コードが読みやすくなり、より多くのスペースがあれば、バグをより簡単に見つけられたと思います。
  • tempDecimalこの関数で2 番目の変数を作成する理由はありません。Java パラメーターは値で渡されるため、引数に加えた変更は呼び出し元には表示されません。他の場所で値を使用していないためdecimal、余分な変数は不要です。

お役に立てれば!

于 2012-04-13T18:21:30.560 に答える