Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Esercizio da libro

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    Quote Originariamente inviata da senseilaus Visualizza il messaggio
    All'inizio avevo difficoltà, poichè volevo creare un Array che contenesse tutte le età in input. Dal momento che la traccia non dice QUANTE età contenere, ho pensato di creare un Array vuoto senza dimensioni..ma questo non si può fare. Quindi ho optato per un ArrayList<int>, sapendo di dover usare solo numeri. Ho poi capito che non potevo utilizzare un primitivo ma un oggetto,così mi sono visto anche l'Integer, che (correggimi se sbaglio) trasforma il primitivo "int" in un oggetto.
    Esatto, un array deve avere una propria dimensione, si poteva anche creare un array di grandi dimensioni (un tipo primitivo non può essere null e di default l'array conterrebbe tutti i valori a 0 nel caso di int, ma in generale questa soluzione ti costringe a controllare che a una certa posizione il valore non sia null nel caso di un array di Object o derivati) ma la lista è sicuramente la soluzione migliore e più elegante.
    Ok per Integer, un ArrayList in effetti non può contenere tipi primitivi, ma non è proprio corretto dire che Integer trasformi un intero in un oggetto, è solo una classe che funziona da contenitore e incapsula al proprio interno un campo int, fornendo vari metodi di utilità (inoltre grazie all'autoboxing java consente di trattare i tipi primitivi come se fossero le proprie corrispondenti classi contenitori in diverse parti, quindi tu stai ad esempio aggiungendo degli int alla lista senza dover passare per Integer.valueOf (int number) o per il costruttore di Integer).

    Quote Originariamente inviata da senseilaus Visualizza il messaggio
    Ho pensato a questo:

    [...]

    Di per sè funziona, l'ho già provato. Ma come potrei implementarlo con la traccia proposta?
    Il codice sembra andare bene, potevi trovare il massimo direttamente a partire dalla lista senza trasformarla in array, ma non è sbagliato.
    Basta prendere l'elemento all'indice i richiamando il metodo get (i) invece di usare le parentesi quadre.
    Puoi anche utilizzare il costrutto for-each, che è molto comodo e snellisce il codice:

    codice:
    for (int number : list) {
         // non serve il metodo get o usare le parentesi, il loop prende ogni elemento della lista e lo assegna alla variabile locale number
    }

    Solo un piccolissimo particolare: se invece che inizializzare highestAge a un valore volutamente basso e poi ciclare su tutto l'array o la lista scegli di porlo già uguale al primo valore, il che è una bella cosa, quando fai il ciclo non serve ricominciare da 0, parti direttamente dall'indice 1.

    Cosa intendi con implementarlo con la traccia proposta? Hai risolto già quanto viene chiesto, hai fatto solo una cosa in più non richiesta, ovvero memorizzare tutti i valori, ma va bene.
    Se ti riferisci all'esempio con Interfaccia e le altre classi di cui parlavi sopra, non hai parlato di altre consegne ...
    Ultima modifica di Ansharja; 07-09-2017 a 15:54

  2. #2
    Grazie mille di tutte le spiegazioni.

    Quote Originariamente inviata da Ansharja Visualizza il messaggio
    Basta prendere l'elemento all'indice i richiamando il metodo get (i) invece di usare le parentesi quadre.
    Era quella la mia intenzione, ma utilizzando
    codice:
    ...
    public void findHighestAge(ArrayList list) {
    int highestAge=list.get(0);
    sotto il ".get(0)" mi da l'errore "cannot convert from Object to Int".

    Per il resto tutto okay, per quanto riguarda la mia richiesta sull' "implementazione" intendevo come integrare il tutto nella traccia dell'esercizio, ma non è importante.

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Quote Originariamente inviata da senseilaus Visualizza il messaggio
    Grazie mille di tutte le spiegazioni.


    Era quella la mia intenzione, ma utilizzando
    codice:
    ...
    public void findHighestAge(ArrayList list) {
    int highestAge=list.get(0);
    sotto il ".get(0)" mi da l'errore "cannot convert from Object to Int".

    Per il resto tutto okay, per quanto riguarda la mia richiesta sull' "implementazione" intendevo come integrare il tutto nella traccia dell'esercizio, ma non è importante.
    Perchè gli ArrayList vanno sempre tipizzati, altrimenti stai usando le classi RAW che trattano tutto come Object:

    codice:
    public void findHighestAge(ArrayList<Integer> list) {

    Ciao.
    "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

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 © 2026 vBulletin Solutions, Inc. All rights reserved.