Grazie per aver dettagliato il mio "hai fatto un po' di confusione"Comunque, perchè il codice di tulipan non funziona?
Risposta breve: perchè quel codice fa di tutto, tranne che cercare (e nemmeno ottenere) la stringa più lunga.
Risposta dettagliata:
Crei un ArrayList e lo popoli con due stringhe. OK
Poi crei un array "a" di due elementi ( arr.size() ). OK
Poi valorizzi la variabile max con il primo elemento dell'array (array che nessuno ha valorizzato, quindi tutti gli elementi sono a 0). MAH
Poi fai un ciclo for sull'array "a" (che, ripeto, contiene tutti i valori a 0), partendo però dal secondo elemento (perchè??). MAH + MAH
Nel ciclo for confronti a[i] (che è sempre 0) con il valore di "max", che è 0. Quindi non troverai mai un valore che vada a sostituire l'attuale valore di "max".
Supponendo per assurdo che nell'array "a" ci siano le lunghezze delle stringhe (e abbiamo visto che non è così, perchè da nessuna parte sei andato a calcolarle), alla fine del ciclo for nella variabile "max" avresti la lunghezza della stringa più lunga (sopponiamo 6, ovvero la lunghezza di "Ciao mondo").
Che fai ora? Vai a prelevare dall'ArrayList la stringa in posizione "max" ( arr.get(max) ), ovvero 6... in un ArrayList di 2 stringhe. NO!
Se anche avessi calcolato le lunghezze delle stringhe (cosa che non hai fatto) e le avessi memorizzate nell'array "a" (cosa che non hai fatto), qui avresti avuto una bella ArrayIndexOutOfBoundsException perchè non puoi ottenere l'elemento in posizione 6 di una lista che ne ha solo 2.
Fine spiegazione lunga.![]()