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?
data la stringa-funzione t="'x^2+6x-e^x"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); } }
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!

Rispondi quotando