2014-05-11 3 views
0

그래서 여기서는 String code = ta.getText(); 메소드를 사용하여 JTextArea에서 텍스트를 가져 오는 중입니다. ta는 TextIDE 클래스에 있으며 public static JTextArea로 선언됩니다. ta = new JTextArea();textArea에서 특정 단어를 찾으려고 시도합니다.

그러나 사용자가 입력 한 텍스트를 검색 한 후 char 배열로 만들고 싶습니다. 따라서 code.toCharrArray() 메서드를 사용합니다. 그런 다음 compileText 메서드에서 for 문을 사용하여 'p'문자를 찾고 p() 메서드를 호출하고 카운터가있는 위치와 실제 문자 배열을 보내면 그렇게 할 수 있습니다. 문자 'r'에 대한 검색을 계속하고 클래스가 단어 인쇄를 찾을 때까지이 작업을 수행합니다. 그럴 때마다 Listener라는 클래스에있는 콘솔처럼 작동하는 다른 JTextArea를 추가해야하므로 Listener.c.jt1.append (s)를 사용합니다. 반면 s는 세미콜론 ';'을 발견 할 때까지 인쇄 후 나오는 것과 같습니다.

하지만 작동하지 않아 오류가 발생하지 않으므로 여기에 논리적 오류가있는 것으로 추정됩니다. 도움을 주셔서 감사합니다 !! :)

public class Compiler { 

    String code = TextIDE.ta.getText(); //Gets the text that was inputted by the user 

    public Compiler(){ //Constructor 

     if(!(code.endsWith("programEnd"))){ 
      Listener.c.jt2.append("Error - Code must end with line: programEnd on the last line"); 
     }else{ 
      compileText(code, 0); 
     } 
    } 

    public void compileText(String code, int start){ //Starts the compiling 
     char[] codeArray = code.toCharArray(); 
     System.out.println(codeArray.length); 

     for(int i = start; i < codeArray.length; i++){ //Looks for character 'p' 
      switch(codeArray[i]){ 
       case 'p': p(codeArray, ++i); 
          System.out.println("p"); 
        break; 
      } 
     } 
    } 

    public void p(char[] codeArray, int start){ 
     for(int i = start; i < codeArray.length; i++){ 
      switch(codeArray[i]){ 
       case 'r': r(codeArray, ++i); 
          System.out.println("r"); 
        break; 
      } 
     } 
    } 

    public void r(char[] codeArray, int start){ 
     for(int i = start; i < codeArray.length; i++){ 
      switch(codeArray[i]){ 
       case 'i': i(codeArray, ++i); 
          System.out.println("i"); 
        break; 
      } 
     } 
    } 

    public void i(char[] codeArray, int start){ 
     for(int i = start; i < codeArray.length; i++){ 
      switch(codeArray[i]){ 
       case 'n': n(codeArray, ++i); 
          System.out.println("n"); 
        break; 
      } 
     } 
    } 

    public void n(char[] codeArray, int start){ 
     for(int i = start; i < codeArray.length; i++){ 
      switch(codeArray[i]){ 
       case 't': t(codeArray, ++i); 
          System.out.println("t"); 
        break; 
      } 
     } 
    } 

    public void t(char[] codeArray, int start){ 
      String s = ""; 
      for(int i = start; i < codeArray.length; i++){ 
       if(!(codeArray[i] == ';')){ 
        s += codeArray[i]; 
       }else{ 
        Listener.c.jt1.append(s); 
        compileText(code, ++i); 
        break; 
       } 
      } 
    } 
} 
+0

이 desciption에서 도움을 기다리고 캔트,도 코드에서, 당신은 빨리 SSCCE을 게시 더 나은 도움을,보다 자세한 정보를 제공 할 필요를/MCVE, 짧은 실행 가능한, 컴파일 가능한 – mKorbel

+0

사용 set/getDocument (JTextComponents의 모델) – mKorbel

+1

검색하는 방법에 대한 코드 예제 작업을위한 JTextComponents에 대한 Oracle 자습서 읽기 ... – mKorbel

답변

0

나는 문자 배열 단어 인쇄를 찾으려면, 내가 어떻게해야합니까?

왜 문자 배열을 사용하고 있습니까? 당신은 단지 텍스트 문자열을 검색 할 수 있습니다

String text = textArea.getText(); 
System.out.println(text.indexof("print"); 
관련 문제