ho creato all'interno di una classe un metodo statico che prendendo cm parametro una stringa-funzione,cioè una stringa che dovrebbe rappresentare una funzione matematica(ex:x^2+3x+e^x),talemetodo dovrebbe dividere la stringa-funzione in monomi non appena trova un "+" o un "-" con una sorta di ricorsione...
ma il metodo anzichè dare la divisione corretta della stringa riporta della ripetizioni ma nn capisco perchè,e dove è sbagliato,mi aiutate voi ed eventualmente mi date suggerimenti per farlo funzionare meglio?
codice:
class AnalizzatoreStringa{
private static LinkedList l=new LinkedList();
public static LinkedList dividiInMonomi(String s){
		String t=s;
		int i=0;
		int indexp=t.indexOf("+");
		int indexm=t.indexOf("-");
		if(indexp==-1&&indexm==-1){
			l.add(t);
		}
		if(indexp!=-1&&indexm!=-1){
			if(indexp<indexm){
				l.add(t.substring(i,indexp));
				i=indexp+1;
				s=t.substring(i,t.length());
				indexp=s.indexOf("+");
				dividiInMonomi(s);
			}
			if(indexm<indexp){
				l.add(t.substring(i,indexm));
				i=indexm+1;
				s=t.substring(i,t.length());
				indexm=s.indexOf("-");
				dividiInMonomi(s);
			}
		}
		if(indexp!=-1&&indexm==-1){
			l.add(t.substring(i,indexp));
			i=indexp+1;
			s=t.substring(i,t.length());
			indexp=s.indexOf("+");
			dividiInMonomi(s);
		}
		if(indexm!=-1&&indexp==-1){
			l.add(t.substring(i,indexm));
			i=indexm+1;
			s=t.substring(i,t.length());
			indexm=s.indexOf("-");
			dividiInMonomi(s);
		}
		return l;
	}
//metodo main
public static void main (String [] args){
		String t="5x^2+6x-e^x";
		LinkedList l=new LinkedList();
		l=dividiInMonomi(t);
		System.out.println(l);

	}
}
data la stringa-funzione t="'x^2+6x-e^x"
l'output che vorrei attraverso qst codice vorrei fosse questo:"[5x^2,6x,e^x]"
e invece qll che stampa realmente è qst:"[5x^2, 6x, e^x, 6x, e^x]"
perchè?cosa ho sbagliato?
grazie 1000!