0

例: 文字列「abc」は「nop」を返す必要があります。

System.out.println を実行したところ、正しい結果が出力されましたが、JUnit テスト ケースで赤いバーが表示されました。メソッド move13 は文字を取得し、13 スペース左または右に移動します。

メソッド encode は、私が問題を抱えている場所です。

package code;

public class Encoder {

    public char move13(char letter) {
        if (letter >= 'a' && letter <= 'm') {
            return (char)(letter + 13);
        }
        if (letter >= 'A' && letter <= 'M') {
            return (char)(letter + 13);
        }
        if (letter >= 'n' && letter <= 'z') {
            return (char)(letter - 13);
        }
        if (letter >= 'N' && letter <= 'Z') {
            return (char)(letter - 13);
        }
        return letter;
    }

    public String encode(String text) {
        String valueOfchar = "";
        for (int i = 0; i < text.length(); i++) {
            char character = text.charAt(i);
            character = move13(character);
            valueOfchar = String.valueOf(character);
            System.out.println(valueOfchar);

        }
        return valueOfchar;

    }
}
4

2 に答える 2

0

単体テスト コードは表示されませんが、推測では、メソッドencode()は文字列全体ではなく、単一の文字のみを返します。

public String encode(String text) {
    String valueOfchar = "";
    for (int i = 0; i < text.length(); i++) {
    ....
    valueOfchar = String.valueOf(character); // A single char
    ....
}
return valueOfchar;

試す:

valueOfchar = valueOfchar.concat(String.valueOf(character));
于 2015-09-25T23:43:40.713 に答える
0

どうぞ、お役に立てば幸いです

public static char move13(char letter) {
    if (letter >= 'a' && letter <= 'm')
        return (char) (letter + 13);
    if (letter >= 'A' && letter <= 'M')
        return (char) (letter + 13);
    if (letter >= 'n' && letter <= 'z')
        return (char) (letter - 13);
    if (letter >= 'N' && letter <= 'Z')
        return (char) (letter - 13);
    return letter;
}

public static String encode(String text) {
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < text.length(); i++) {
        char character = text.charAt(i);
        character = move13(character);
        sb.append(character);
        //System.out.println(valueOfchar);

    }
    return sb.toString();

}

char は StringBuilder で連結され(sb.append(char))ます。で処理された各文字の後move13()、連結された文字 ( sb.toString()) を返します。

于 2015-09-25T23:46:11.157 に答える