2014-05-11 5 views
0

작은 부분 문자열로 문자열을 재귀 적으로 구문 분석하는 프로그램을 만들어야합니다. 모든 하위 문자열은 이전 문자보다 짧은 한 글자입니다. 끝나면 단어를 다시 표시하지만 첫 번째 문자를 잘라낸 다음 그 부분 문자열을 사용합니다. 예를 들어재귀 문자열 파서

: 프로그램이 표시 할 단어 '슬러거'을 감안할 때

슬러거
Slugge
Slugg
슬러그
SLU
SL
S
러거
lugge
lugg
lug,210 루
리터

그리고 계속적으로.

이 지금까지까지 일을 중단하도록되어 그 내 코드의 일부입니다 : 내가 모든 조각과 내가 필요로하는 부분을 가지고 생각

private static void stringParser(String str) 
{ 
    if(str.length() < 1) 
    { 
     return; 
    } 
    else if(str.length() == 0) 
    { 
     removeFirstChar(str, 1); 
    } 
    else 
    { 
     System.out.println(str); 
     stringParser(str.substring(0, str.length() - 1)); 
    } 
} // End stringParser method 

private static void removeFirstChar(String str, int i) 
{ 
    String strNew = str.substring(i); 
    stringParser(strNew); 
    return strNew; 
} // End removeFirstChar method 

, 그러나 아마 그냥이없는 내가 원하는 것을하기 위해 올바른 순서로

도움을 주시면 대단히 감사하겠습니다. 감사합니다.

+0

를 참조하십시오; 당신이 붙어있는 코드에 대해 특별한 질문이 있다면 더 많은 것입니다. 당신이 놓친 것을 당신이 찾고있는 어떤 종류의 행동이 있습니까? 질문을 현재 말하고있는 것처럼 스스로 실행하려고하지 않은 것 같습니다. – awksp

답변

1

귀하의 코드에 다음을 추가했습니다. 이

public static void main(String[] args) { 
    String str = "slugger"; 

    for(int i=0;i<str.length();i++) { 
     stringParser(str.substring(i)); 
    } 


    } 

전체 코드를 작동하는 경우 스택 오버플로가 당신을 위해 무거운 어떻게해야되지 ...이 질문은 조금 광범위 .....

public class Test { 

    public static void main(String[] args) { 
    String str = "slugger"; 

    for(int i=0;i<str.length();i++) { 
     stringParser(str.substring(i)); 
    } 


    } 

    private static void stringParser(String str) 
    { 
     if(str.length() < 1) 
     { 
      return; 
     } 
     else if(str.length() == 0) 
     { 
      removeFirstChar(str, 1); 
     } 
     else 
     { 
      System.out.println(str); 
      stringParser(str.substring(0, str.length() - 1)); 
     } 
    } // End stringParser method 

    private static void removeFirstChar(String str, int i) 
    { 
     String strNew = str.substring(i); 
     stringParser(strNew); 
     str = strNew; 
    } 

} 
+0

대단히 훌륭했습니다! 내가 필요한 모든 것은 for-loop를 메인으로했다. 정말 고맙습니다! 고맙습니다! – linad181

+0

감사합니다. 좋은 코드였습니다. 또한 귀하의 목적을 해결하는 경우 답변을 수락하십시오. – Hirak