-2

Java で作成したこのメソッドに問題があります。

メソッドは、2 つの文字列を取ることです。最初の文字列sArrは、2 番目の文字列が解析されるときに追加された文字を追跡するためのものです。2 番目の文字str列は整数の文字列で、各整数を順番に使用して に加算しsArrます。各整数は、異なる文字配列を参照します。次に例を示します。

 String[] two = {"A", "B", "C"};

現時点では、別の方法の補助的な方法です。何かを入力すると、入力された最初の数字のみが使用されます。数字からセットのすべての順列を出力することになっています。22 を入力すると、次のように出力されます。AA, AB, AC, BA, BB, BC, CA, CB, CC

私が使ってきたテスト入力printStrAux("", 23);2ABC

私は必ずしもスプーンで回答したいとは思っていませんが、どんな助けも素晴らしいでしょう.

public static void printStrings(String str){
    if(isAllDigits(str))
        System.out.println(printStrAux("", str));
}

protected static String printStrAux(String sArr, String str){
    if(str.equals(""))
        return sArr;


    else{

        Integer val = Integer.parseInt(str.substring(0, 1));

        switch (val) {
        case 1: printStrAux(sArr, str.substring(1));
        break;
        case 2: 
            for(int i = 0; i < two.length; i++){
                printStrAux(sArr += two[i], str.substring(1));
            }

        break;
        case 3: 
            for(int i = 0; i < three.length; i++){
                printStrAux(sArr += three[i], str.substring(1));
            }

        break;

        case 4:  
            for(int i = 0; i < four.length; i++){
                printStrAux(sArr += four[i], str.substring(1));
            }

        break;
        case 5:  
            for(int i = 0; i < five.length; i++){
                printStrAux(sArr += five[i], str.substring(1));
            }

        break;
        case 6:  
            for(int i = 0; i < six.length; i++){
                printStrAux(sArr += six[i], str.substring(1));
            }

        break;
        case 7:  
            for(int i = 0; i < seven.length; i++){
                printStrAux(sArr += seven[i], str.substring(1));
            }

        break;
        case 8:  
            for(int i = 0; i < eight.length; i++){
                printStrAux(sArr += eight[i], str.substring(1));
            }

        break;
        case 9:  
            for(int i = 0; i < nine.length; i++){
                printStrAux(sArr += nine[i], str.substring(1));

        }
        break;
        case 0:  {
            printStrAux(sArr, str.substring(1));
        }
        break;


        }

    }
    return sArr;
}

私が何をしたかったのかではなく、ここで何をしているのかについては、ほとんど手がかりがないことに注意してください。

4

3 に答える 3

1

メソッドを再帰的に呼び出すときは、その戻り値 fe をキャッチする必要があります。

sArr = printStrAux(sArr += two[i], str.substring(1));
于 2013-05-01T11:25:37.307 に答える
1

printStrAux への再帰呼び出しでは、戻り値 sArr を保持しません。

于 2013-05-01T11:25:29.453 に答える