2013-11-23 34 views
0

我的程序應該根據用戶的輸入生成字母模式。我必須使用遞歸來設置每個輸出不同。我已經這樣做了。接下來,我必須在另一種方法中比較兩個輸出,並使用遞歸來查找兩者之間最長公共子序列的長度。問題是我不知道如何比較它們。由於它們是無效的結果,我不知道如何將它們轉換爲字符串。我需要將void輸出轉換爲字符串,以便我可以比較兩個字符串

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(); 
} 

} // fin。

回答

2

你不能,返回類型「void」意味着沒有結果返回,所以沒有什麼可以轉換的。

您的方法只是將其輸出打印到控制檯,您將需要重寫它們,以便它們實際返回結果。

的一種方法是這樣的(僞):

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; 
+1

返回然後,當你準備打印,只是做'的System.out.println(produceLetterPattern(... ))' –

相關問題