Ho ideato questo codice per aiutarti nella comprensione della soluzione al tuo problema
codice:
public static void main(String... args) {
String riga = "a+3a+b";
//Ciclo per ogni carattere della stringa riga
for (int i = 0; i < riga.length() ; i++) {
/* Questo try serve per un eventuale errore da parte di
* ' Integer.valueOf(primo); '
* che controlla se il carattere "primo" è un numero intero
*/
try {
if ((i + 1) >= riga.length()) break;
String primo = String.valueOf(riga.toCharArray()[i]);
String secondo = String.valueOf(riga.toCharArray()[i + 1]);
//Questo va visto come un controllo, se non è un numero genera un eccezione
Integer.valueOf(primo);
/* Se il controllo precedente non ha generato errori (quindi è un numero)
* controlla se il carattere che segue cioè "secondo" non sia un altro numero
*/
try {
//Questo va visto sempre come un controllo
Integer.valueOf(secondo);
} catch (NumberFormatException nfexception) {
/* Se genera un errore (quindi il secondo non è un numero) spezza la riga
* per aggiungere il carattere '*' tra le due parti
*/
riga = riga.substring(0, (i + 1) ) + '*' + riga.substring( (i + 1), riga.length());
}
} catch (Exception exception) {
//L'errore generato da ' Integer.valueOf(primo); ' viene ignorato
}
}
//Stampa del risultato
System.out.println(riga);
}
Ho cercato di spiegare ogni cosa ma, se qualcosa non è chiara non esitare a rispondere!