Premetto che sono un principiante in java, però qualcosina la conosco.
p = m.indexOf("-", p) + 1
questa funzione restituisce l'indice del carattere primo carattere che si vuole cercaere, "-" nel nostro caso, cercandolo dopo l'indice p. Il + 1 porta l'indice al successivo di "-". Faccio un esempio.
Ho la stringa m = "questa - una stringa - di prova"
se p =0; la funzione è come p = m.indexOf("-", 0) + 1 quindi cercherà "-" partendo dall'inizio. La funzione restituisce 7 perchè "-" è il 7imo carattere, ed è il primo a partire dall'inizio. Però restituisce 7+1 perchè c'è il +1 dopo la funzione.
Se invece la funzione sarebbe stata p = m.indexOf("-", 10) + 1
La funzione inizia a cercare il primo "-" partendo dal 10imo carattere quindi ritorna 21.Inizia a cercare dal 10imo quindi salta il primo "-" che si trova al 7imo.
indexOf(int carattere, int from)
Restituisce l’indice della prima occorrenza del carattere specificato cercando avanti dall’indice specificato
Spero di essere stato chiaro.
Ciao.