Опитвам се да намеря конкретни думи в textArea

Така че това, което се опитвам да направя тук, е да получа текста от JTextArea ta, като използвам метода String code = ta.getText(); ta се намира в класа TextIDE и е деклариран като public static JTextArea ta = new JTextArea();

След това обаче извлякох текста, който е въведен от потребителя, който искам да го направя в масив от символи, така че използвам метода code.toCharrArray(); След това в метода compileText използвам оператора for, за да потърся буквата „p“ и ако я намеря, извиквам метода p() и изпращам къде е броячът i и действителния масив от знаци, за да мога продължете търсенето на буквата „r“ и правя това, докато класът намери думата print. Всеки път, когато го направи, трябва да добави друга JTextArea, която работи като конзола, разположена в клас, наречен Listener, така че използвам Listener.c.jt1.append(s); като има предвид, че s е равно на всичко, което идва след print до момента, в който намира точка и запетая ';'.

Но не работи, не получавам грешка, така че предполагам, че тук има логическа грешка... Благодаря за всяка помощ!! :)

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 в char масив, как да направя това? и след това да продължите да търсите може би друга дума, също като нея?   -  person Darawan    schedule 11.05.2014
comment
Искам да намеря думата print в char масив, защото indexof(str) ще ми върне само първата дума, която започва с print, искам всичките. Например в текста asdhfuhadsufh print adhfuhadfuj print има две променливи, които са равни на print! :)   -  person Darawan    schedule 12.05.2014


Отговори (1)


Искам да намеря думата print в char масив, как да направя това?

Защо използвате масив от знаци? Можете просто да търсите в текстовия низ:

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