Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Java: ritornare array da ciclo for

    Ciao a tutti.
    Sono alle prime armi con Java e con la programmazione in generale. Sono solo poche settimane che ci studio. Al corso ci hanno dato un esercizio semplice da fare ma non riesco a capire dove sbaglio. Devo creare un metodo che ritorni un array da 0 a 10.

    public int[] array(){
    int[] array = {1,2,3,4,5,6,7,8,9,10};
    for(int i = 0; i < array.length; i++)
    return array[i];
    }

    Poi sul main per verificare se è giusto invoco il metodo con l'oggetto creato (in questo caso g);
    System.out.println(g.array());

    dove sto sbagliando e perchè?
    Grazie

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,465

    Moderazione

    C'è una sezione apposita dedicata a Java.
    Sposto la discussione.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613

    Re: Java: ritornare array da ciclo for

    Originariamente inviato da andre.nini
    Ciao a tutti.
    Sono alle prime armi con Java e con la programmazione in generale. Sono solo poche settimane che ci studio. Al corso ci hanno dato un esercizio semplice da fare ma non riesco a capire dove sbaglio. Devo creare un metodo che ritorni un array da 0 a 10.

    public int[] array(){
    int[] array = {1,2,3,4,5,6,7,8,9,10};
    for(int i = 0; i < array.length; i++)
    return array[i];
    }

    Poi sul main per verificare se è giusto invoco il metodo con l'oggetto creato (in questo caso g);
    System.out.println(g.array());

    dove sto sbagliando e perchè?
    Grazie
    Il codice mettilo fra tag [CODE] così ne mantieni l'indentazione (anche se in questo caso sono poche righe).

    Quando un metodo arriva al return, semplicemente termina e dà come risultato il valore specificato, qualsiasi cosa stesse facendo: se metti il return all'interno di un ciclo, termina anche quello.
    Quello che succede nel tuo codice è che dopo aver creato l'array cominci a scorrerlo, alla prima iterazione il tuo metodo termina restituendo il primo elemento, e il tuo programma finisce lì.
    Non dovrebbe neanche compilare, visto che nella firma del metodo dichiari di voler restituire un array di interi, mentre nel corpo restituisci un solo intero. E quando hai errori, dillo che si fa prima ad aiutarti.
    Se devi ritornare l'array, semplicemente ritorna l'array, non c'è bisogno di scorrere nulla.

    Tuttavia l'approcio che hai usato per la creazione dell'array non è dei migliori, e se ti hanno dato un esercizio probabilmente non era nemmeno quello lo scopo: se il testo fosse stato "scrivi un metodo che restituisca un array con numeri da 1 a 100.000" tu che avresti fatto?

  4. #4
    codice:
    public int[] array() 
    { int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; 
    return array; 
    }
    Grazie per la spiegazione Alla fine ho capito più o meno come funziona...con questo codice restituisco tutti i numeri dell'array.

    Ora sono passato a fare un metodo che deve restituire un array con tutti gli interi da 0 al parametro inserito.

    codice:
    public int[] array2(int sup) { 
    if (sup <= 0)
     return new int[0]; 
    int[] array = new int[sup]; 
    for (int i = 0; i < sup; i++) 
    array[i] = i; return array; 
    }
    Anche questo funziona, ma non riesco a completare il metodo seguente, in cui devo restituire un array di tutti gli interi tra il primo e il secondo parametro. Stessa cosa del precedente metodo solo che al posto dello 0 c'è il primo parametro. C'è una parte in cui restituisco un array vuoto in caso il primo parametro fosse superiore al secondo, e quella è giusta. Non riesco a far associare il primo parametro per farlo incrementare fino al secondo.
    Quando controllo i risultati restituisce da 0 al secondo parametro come nell'esercizio precedente.

    codice:
    public int[] array3(int inf, int sup){ 
    if(inf >= sup)
     return new int[0]; 
    int[] array = new int[sup];
     for(int i = inf; i < sup; i++) 
    array[i] = i; 
    return array; 
    }

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    gli elementi tra inf e sup sono: (sup - inf ) + 1. Ne consegue che:
    codice:
    ...
    else {
                int[] array = new int[sup - inf +1];
                for (int i = inf; i <= sup; i++) {
                    array[i - inf] = i;
                }
                return array;
            }
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  6. #6
    Ok grazie! Ora comincio a capire.

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.