Попытка найти определенные слова в textArea

Итак, что я пытаюсь здесь сделать, так это получить текст из JTextArea ta с помощью метода String code = ta.getText(); ta расположен в классе TextIDE и объявлен как public static JTextArea ta = new JTextArea();

Однако после этого я получил текст, введенный пользователем, я хочу превратить его в массив символов, поэтому я использую метод code.toCharrArray(); После этого в методе compileText я использую оператор for для поиска буквы «p», и если она найдена, я вызываю метод p() и отправляю туда, где был счетчик i и фактический массив символов, поэтому я могу продолжаю поиск буквы «р» и делаю это до тех пор, пока класс не найдет слово «печать». Всякий раз, когда это происходит, он должен добавить еще один JTextArea, который работает как консоль, расположенный в классе с именем Listener, поэтому я использую 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;
                }
            }
    }
}

person Darawan    schedule 11.05.2014    source источник
comment
вы не можете ждать какой-либо помощи ни от этого описания, ни от кода, вы должны предоставить более подробную информацию, чем это, для лучшей помощи, скорее опубликуйте SSCCE / MCVE, короткий, исполняемый, компилируемый   -  person mKorbel    schedule 11.05.2014
comment
используйте set/getDocument (модель для JTextComponents)   -  person mKorbel    schedule 11.05.2014
comment
прочитайте учебные пособия Oracle о JTextComponents для примера рабочего кода о том, как искать ....   -  person mKorbel    schedule 11.05.2014
comment
Я хочу найти слово print в массиве символов, как мне это сделать? а затем продолжить поиск, может быть, другое слово так же, как оно?   -  person Darawan    schedule 11.05.2014
comment
Я хочу найти слово print в массиве символов, потому что indexof(str) вернет мне только первое слово, начинающееся с print, мне нужны все они. Например, в тексте asdhfuhadsufh print adhfuhadfuj print есть две переменные, равные print! :)   -  person Darawan    schedule 12.05.2014


Ответы (1)


Я хочу найти слово print в массиве символов, как мне это сделать?

Почему вы используете массив символов? Вы можете просто искать текстовую строку:

String text = textArea.getText();
System.out.println( text.indexof( "print" );
person camickr    schedule 11.05.2014