Visualizzazione dei risultati da 1 a 4 su 4

Hybrid View

  1. #1
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    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.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  2. #2
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    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.
    Grazie per aver dettagliato il mio "hai fatto un po' di confusione"

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.