0

私のプログラムは、ユーザーの入力に基づいて文字のパターンを生成することになっています。各出力が異なるように設定するには、再帰を使用する必要があります。私はすでにこれをしました。次に、別の方法で 2 つの出力を比較し、再帰を使用して、2 つの間の最長の共通部分シーケンスの長さを見つける必要があります。問題は、それらを比較する方法がわからないことです。それらは無効な結果であるため、それらを文字列に変換する方法がわかりません。

 import java.util.Scanner;
public class patternOfLetters {
private static String letter;

public static void printLetterPattern(char letter){
    char [] pattern = new char[1];
    int patternLength= pattern.length;
    String result="";
    char start=letter;
    if(start=='A'){
        System.out.print('A');
        result+='A';
    }else if(start=='B'){
        printLetterPattern('A');
        System.out.print('B');
        printLetterPattern('A');
    }
    else if(start=='C'){
        printLetterPattern('B');
        System.out.print('C');
        printLetterPattern('B');
    }
    else if(start=='D'){
        printLetterPattern('C');
        System.out.print('D');
        printLetterPattern('C');
    }
}


public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner in = new Scanner(System.in);
    Scanner otherIn = new Scanner(System.in);
    System.out.println("Enter a character to start the pattern: ");
    String input = in.nextLine(); 
    String upper = input.toUpperCase();
    char letter=upper.charAt(0);
    System.out.println("");
    System.out.println("Your first pattern of letters is:");
    printLetterPattern(letter);
    System.out.println("");
    System.out.println("");

    System.out.println("Enter another character to generate your second pattern: ");
    String input2 = in.nextLine(); 
    String upper2 = input2.toUpperCase();
    char letter2=upper2.charAt(0);
    System.out.println("");
    System.out.println("Your second pattern of letters is:");
    printLetterPattern(letter2);

in.close();
otherIn.close();
}

}//フィン。

4

1 に答える 1

2

できません。戻り値の型「void」は、結果が返されないことを意味するため、変換できるものは何もありません。

メソッドは出力をコンソールに出力するだけです。実際に結果を返すように書き換える必要があります。

1 つの方法は次のようになります (疑似コード):

public String produceLetterPattern(String pattern, char letter) {
    ...
    if(start=='A') {
        pattern+="A";
        return pattern;
    } else if (start=='B') {
        pattern = produceLetterPattern(pattern, 'A');
        pattern +="B";
        pattern = produceLetterPattern(pattern, 'A');
        return pattern;
    } ...
}

それが一般的な考え方です。そこから解決できるはずです。重要な部分は、結果が返される必要があることです。上記の例では、文字列が返されます。

return pattern;
于 2013-11-23T01:26:28.407 に答える