0

これは学校からの課題です: 1 つの整数をパラメーターとして取り、同等のものをバイナリーで出力する、toBinary という再帰メソッドを作成します。

これが私のコードです:

import java.util.*;
class MethodAssign6{
static void toBinary(int a){
    if(a==0){
        System.out.print("theArrayOrStringIWant");
    }
    else{
        System.out.println(a%2);
        toBinary(a/2);
    }
}
public static void main(String[]args){
    toBinary(24);
}
}

ご覧のとおり、質問でパラメーターとして単一の整数のみが必要な場合、すべての a%2 値を保持する配列を作成する方法がわかりません。誰でも私を助けてください。

4

4 に答える 4

3

あなたは正しい道を進んでいると思いますが、現在の方法では数値が逆に出力されます。再帰呼び出しを実行してから印刷してみてください

static void toBinary(int a){
    if(a!=0) {
        toBinary(a/2);
        System.out.print(a%2);
    }
}

String を使用して同様の効果を得ることもできます。

static String toBinary(int a){
    if(a==0) {
        return "";
    }
    else {
        return toBinary(a/2) + (a%2);
    }
}

public static void main(String[]args){
    System.out.println(toBinary(24));
}
于 2012-10-17T03:43:49.010 に答える
1

一般に、このような再帰メソッドにはパブリック メソッドと、計算を完了するために使用されるプライベート メソッドがあります。したがって、パブリック メソッドは単一の整数を取り、値を保持するように配列を設定します。プライベート配列は整数と現在の配列を受け取るため、その値を配列に追加できます。最後に、プライベート メソッドが戻ると、パブリック メソッドが配列を解析して結果を返します。

于 2012-10-17T03:39:28.553 に答える
1

ビットを印刷するだけでよい場合は、実際にビットを配列に保持する必要はありません。そのまま System.out.print を使用できます。番号を逆に出力しないように、print の呼び出しと再帰呼び出しを行う順序に注意してください。

于 2012-10-17T03:42:16.587 に答える
-1
// static String[] valsbyte = new String[10]; // global variable if you return a string
static byte[] valsbyte = new byte[10]; // global variable


// static String[] toBinary(int a){ // if you return a string
static byte[] toBinary(int a){
n++;
if(n>10){ // check recursion to jump over process and internal method call


// valsbyte[n] = a%2; // if you reurn a string

valsbyte[n] = new Integer(ax).byteValue(); // convert to byte



//LAST LINE OF METHOD
return valsbyte[n];
于 2012-10-17T03:57:16.123 に答える