Domanda Inserimento in un array

Stato
Discussione chiusa ad ulteriori risposte.

Hamzinho

Utente Bronze
15 Febbraio 2016
9
6
0
31
Salve ragazzi,
Io dovrei inserire un massimo di 10 numeri interi in un array chiamato num. I numeri inseriti devono essere strettamente crescenti quindi un numero inserito non può essere minore del numero inserito precedentemente, nel caso succedesse dovrei stampare un messaggio di errore e non salvare il numero inserito nell'array.
Il mio codice compila tutto, ma se io vado ad inserire un numero minore di quello precedente, il messaggio di errore esce, però il numero viene salvato nell'array lo stesso e non capisco perchè. Aiutatemi per favore.

Codice:
Java:
//inserimento dei primi 10 numeri
                case 1:
                    for(int j=0; j<num.length; j++){
                        System.out.println("Inserisci numero: ");
                        int numeri = scan.nextInt();
                        num[j]= numeri;
                        if(j>0){
                            if(num[j-1]<numeri){
                                num[j] = numeri;
                            }else{
                                System.out.println("Inserimento errato, ricominciare da capo");
                              
                                break;
                            }
                        }
                    }
                    System.out.println("Array pieno");
                    break;
 
Java:
...
                        int numeri = scan.nextInt();
                        num[j]= numeri; //elimina questa riga
                        if(j>0){
...
devi eliminare l'assegnazione segnalata
 
Dopo non mi prende il primo numero però, se io inserisco [1,2,3,4,5,6,7,8,9,10] e vado a stampare l'array, mi escono tutti i numeri al posto dell'1 che viene sostituito con uno 0 non so perchè
 
Ciao,
riprendendo un po' quello che ha scritto Barbossa, effettivamente il tuo errore logico sta lì ... proprio in quella assegnazione.
Tu salvi il valore nell'array indipendentemente dal suo valore (se inferiore o meno agli altri).

Seguendo il consiglio di Barbossa è normale che il tuo primo numero non venga salvato: non ne prevedi esplicitamente il salvataggio (salvi solo ad indice j con j > 0 ... quindi dalla sola posizione 1). Banalmente nel ramo else di if ( j > 0 ) puoi porre num[0] = numeri;

Ciao,
Tony

P.S. Perchè non provi ad eseguire il debug del tuo codice passo passo ... così che ti rendi conto di cosa accade a run-time?
 
Stato
Discussione chiusa ad ulteriori risposte.