Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2013
    Messaggi
    25

    [java] Acquisizione dati in input in array di oggetti

    Sto realizzando un metodo che effettua il popolamento automatico di un array di oggetti. Purtroppo non posso usare gli arraylist... quindi mi sono dovuto adattare. Il codice funziona,
    però vorrei sapere se è possibile snellirlo.

    codice:
    public void popolamento() {
    		Scanner sc = new Scanner(System.in);
    
    		System.out.println("Inserisce cognome: ");
    		String cognome1 = sc.next();
    
    		System.out.println("Inserire nome: ");
    		String nome1 = sc.next();
    
    		System.out.println("Inserire giorno: ");
    		int giorno1 = sc.nextInt();
    
    		System.out.println("Inserire mese: ");
    		int mese1 = sc.nextInt();
    
    		System.out.println("Inserire anno: ");
    		int anno1 = sc.nextInt();
    
    		System.out.println("Inserire tipo abbonamento: ");
    		int tipo1 =sc.nextInt();
    
    		
    		if (contatore == 1) {
    			array[0] = new Gestione_palestra(cognome1, nome1, giorno1, mese1, anno1, tipo1);
    			contatore++;
    		} else {
    			Gestione_palestra[] array3 = new Gestione_palestra[contatore];
    			for( int i = 0; i < array.length; i++ ){
    				array3[ i ] = array[ i ];
    			}
    			array3[contatore - 1] = new Gestione_palestra(cognome1, nome1, giorno1, mese1, anno1, tipo1);
    			array = array3;
    			contatore++;
    		}

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [java] Acquisizione dati in input in array di oggetti

    Originariamente inviato da abbobba
    Sto realizzando un metodo che effettua il popolamento automatico di un array di oggetti. Purtroppo non posso usare gli arraylist... quindi mi sono dovuto adattare. Il codice funziona,
    però vorrei sapere se è possibile snellirlo.
    Io ti suggerirei una cosa che come risultato finale "snellisce" anche in tal senso. Quella di "incapsulare" la logica di gestione di questo tuo array "espandibile" (anzi meglio "riallocabile").
    Non puoi usare le collection (ArrayList ecc..) del framework? Ok, benissimo. Ma almeno allora crea una tua classe es. ListaGestionePalestra che incapsula al suo interno un Gestione_palestra[] e che offre metodi es.:

    codice:
    public void add(Gestione_palestra e)
    public int size()        // o getSize(), a tua scelta (le collezioni hanno size() )
    public Gestione_palestra get(int index)
    e all'interno (nel add) gestisci appunto la logica di ri-allocazione+copia dell'array. E per copiare un array, nota che esiste System.arraycopy (se non puoi usarlo .. ok, vai pure col for).

    Non solo snellisci nel tuo popolamento() ma fai anche un "buon" lavoro dal punto di vista della OOP.

    P.S. Non usare un 'contatore' o cose tipo if (contatore == 1)
    Visto che hai usato l'approccio in cui il tuo array è sempre della capacità "esatta" per il numero di elementi (non come ArrayList che ha capacità "espansa" rispetto al numero logico di elementi), sfrutta il length dell'array e fai le cose in modo più generico.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2013
    Messaggi
    25
    grazie, mi metto a lavoro

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    prego, ti segnalo ancora una cosa, in effetti prima mi sono focalizzato solo sugli aspetti della tua "collezione" di dati ma se vuoi snellire ulteriormente sulla parte di input, si può fare.
    Puoi o fare una classe a parte oppure tenere lo Scanner come variabile di istanza (dipende cosa fa la classe che ha popolamento() ) in modo da avere metodi es.

    codice:
    public String readStringInput(String prompt);
    public int readIntInput(String prompt);
    In questi metodi non solo puoi fare l'input ma potresti anche gestire gli errori e l'eventuale ripetizione dell'input se errato/malformato.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.