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

    Esercizio Raddoppio Dimensione Array

    Salve a tutti.
    Sono alle prese con il seguente esercizio Java:
    Scrivere un programma java che legga da tastiera una sequenza di interi e li memorizzi in un array.
    Il valore "0" permette di terminare. Se durante il ciclo di inserimento l'array viene riempito, creare un nuovo array di dimensione doppia rispetto al precedente; nella prima metà del nuovo array copiare gli elementi dell'array di partenza, mentre nella seconda metà inserire gli elementi da tastiera.

    il codice che ho scritto è il seguente
    codice:
    public class DoppioArray {
    
        public static void main(String[] args) {
            
            InputWindow in = new InputWindow();
            OutputWindow out = new OutputWindow();
            final int MAX = 10;
            int[] tabella = new int[MAX];
            int i = 0;
            int x = in.readInt("Inserisci elemento");
            
            while(x != 0){
                if(i<tabella.length){
                    tabella[0]=x;
                    for(i=1; i<tabella.length; i++){
                        x=in.readInt("Inserisci elemento");
                        tabella[i]=x;
                        
                    }
                    for(i=0; i<tabella.length; i++)
                        out.write(tabella[i] + " ");
                        out.writeln();
                        
                }
                else{
                    int[] doppio = new int[MAX*2];
                    for(i=0; i<tabella.length; i++)
                        doppio[i]=tabella[i];
                    for(i=tabella.length; i<doppio.length; i++){
                        x = in.readInt("Inserisci elemento");
                        doppio[i]=x;
                    }
                    for(i=0; i<doppio.length; i++){
                        out.write(doppio[i] + " ");
                    }
                }
                    
                    
                    
                
                    
    
    
            }
                
        }
    
    
    }
    Il problema che riscontro nell'esecuzione del programma è quello di non riuscire ad interrompere l'inserimento della sequenza di interi quando digito il carattere "0".
    Cosa c'è che sbaglio?
    Qualcuno può aiutarmi?
    Grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Andreawave Visualizza il messaggio
    Il problema che riscontro nell'esecuzione del programma è quello di non riuscire ad interrompere l'inserimento della sequenza di interi quando digito il carattere "0".
    Cosa c'è che sbaglio?
    Intanto tutta la struttura sarebbe molto ben migliorabile. Ad esempio non c'è affatto bisogno di sparpagliare in 3 punti il in.readInt("Inserisci elemento");

    Te lo spiego a parole (poi codificarlo sta a te ... ): fai un ciclo while con una condizione che non fa uscire mai (teoricamente infinito), dentro innanzitutto leggi il valore numerico. Se il valore è 0, fai uscire dal ciclo. Altrimenti devi inserire il valore nell'array. Qui e solo poco prima di inserire nell'array devi verificare se la capacità è sufficiente, se non lo è fai la re-istanziazione+copia e dopo in ogni caso assegni all'elemento i-esimo.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Intanto tutta la struttura sarebbe molto ben migliorabile. Ad esempio non c'è affatto bisogno di sparpagliare in 3 punti il in.readInt("Inserisci elemento");
    Si, ovviamente quando sono sicuro il codice scritto funzioni a dovere, dopo lo miglioro e aggiungo i commenti...

  4. #4
    Quote Originariamente inviata da andbin Visualizza il messaggio

    Te lo spiego a parole (poi codificarlo sta a te ... ): fai un ciclo while con una condizione che non fa uscire mai (teoricamente infinito), dentro innanzitutto leggi il valore numerico. Se il valore è 0, fai uscire dal ciclo. Altrimenti devi inserire il valore nell'array. Qui e solo poco prima di inserire nell'array devi verificare se la capacità è sufficiente, se non lo è fai la re-istanziazione+copia e dopo in ogni caso assegni all'elemento i-esimo.
    Dal momento che inserisco l'istruzione:"while(x=!0)" non dovrebbe questa essere una condizione che mi fa restare nel ciclo all'infinito?

  5. #5
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    codice:
    while (true) 
    { 
        int x = leggi da tastiera...
    
        if (x == 0) 
        {
            break;
        }
    
        ... 
    }
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

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.