Ciao il programma sottostante data una stringa , rappresentante una espressione
lettere e parentesi, dovrebbe sostituire alla prima occorrenza di un blocco di parentesi considerato es (AB) una stringa chiave.
se il blocco fosse: (AB)
e la stringa Riga: (HJ(AB)(GH)(AB))
dovrei avere come output
(HJ°1°(GH)(AB))
tuttavia il codice sottostante con replaceFirst va in loop,qualcuno mi può aiutare gentilmente a capire l'errore? e nel caso consigliare una idea alternativa????
codice:Scanner in_Str=new Scanner(System.in); Pattern patternRiga = Pattern.compile("([(]([A-Z0-9°]+)[)])"); String Riga ="",Riga2=""; String blocco =""; String espr2=""; int kB=1; StringTokenizer St ; do{ System.out.println("****************************************IMMETTI RIGA******************************************************"); Riga=in_Str.nextLine(); while(Riga.contains("(")){ Matcher matcher = patternRiga.matcher(Riga); while( matcher.find() ){//finche ci sono parentesi elementari blocco=matcher.group(); String chiave= "°".concat(String.valueOf(kB)).concat("°"); //********* CALCOLO BLOCCO ********* //replace Riga2=Riga.replaceFirst(blocco,chiave); //<---ERROREEEE! Riga=Riga2; System.out.println(Riga); kB++; } } }while(true);

