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

    Ordinare array all'inserimento

    Sto avendo problemi con questo programma che ad ogni inserimento in un array di un numero lo deve ordinare.
    Il problema è le me lo ordina in ordine decrescente invece che in maniera crescente e oltre se provo a mettere un valore troppo alto il numero me lo mette sia in posizione 0 sia in posizione 1.
    codice:
    int prova[] = new int[4];
            int num,i,ciclo,ind,var;
            String leggi;
            InputStreamReader input = new InputStreamReader(System.in);
            BufferedReader tast = new BufferedReader(input);
            
       
            
            for(i=0;i<4;i++){
             leggi = tast.readLine();
             num = Integer.valueOf(leggi).intValue();
            prova[i]=num;
            
            for(ind=0;ind<i&&num>prova[ind];ind++) {
                
            
                for(ciclo=i;ciclo>ind;ciclo--) {
                prova[ciclo]=prova[ciclo-1];
                prova[ind]=num;    
                
                
                  
                }
                }
    
                
                
            for(ind=0;ind<4;ind++)
                    System.out.println("Posizione "+ prova[ind]);
                
            }
    Ringrazio tutti quelli che mi aiuteranno.

  2. #2
    Puoi usare un condizionale if che ad ogni numero inserito controlla se è maggiore o minore dell'ultimo inserito e di conseguenza lo inserisce in una determinata posizione dell'array.

    http://docs.oracle.com/javase/1.4.2/...il/Arrays.html oppure usi i metodi di Array in java.util Sort(int).

  3. #3
    Come dovrei modificare il codice per fare quello che dici tu rossirule2012?

  4. #4
    Hai l'array prova di int.

    Userai

    codice:
    sort(prova);

  5. #5
    Ho visto il sort ma io vorrei creare il codice senza utilizzare queste funzione del java.

  6. #6
    Ho provato il tuo codice, penso che ti basti sostituire
    num>prova[ind] con num<prova[ind].

    Però c'è un problema, mi sembra che il numero prova[ind-2] ad ogni ciclo venga sostituito con quello successivo. Non sono sicuro. Forse ho sbagliato a riprodurre il codice.

  7. #7
    Il nuovo codice è questo
    codice:
    int prova[] = new int[10];
            int num,i,ciclo,ind,var;
            String leggi;
            InputStreamReader input = new InputStreamReader(System.in);
            BufferedReader tast = new BufferedReader(input);
            
           for(i=0;i<4;i++){
             leggi = tast.readLine();
             num = Integer.valueOf(leggi).intValue();
            prova[i]=num;
    
     for(ind=0;ind<i&&num<prova[ind];ind++) {
    for(ciclo=i;ciclo>ind;ciclo--) {
    prova[ciclo]=prova[ciclo-1];
    prova[ind]=num;    
                
                }
                }
    Durante le prove se faccio 4 cicli al terzo se provo ha mettere un numero più grande dei primi due che gli ho dato, il numero che gli ho dato da tastiera lo assegna sia al posto 0 sia ha quello 1

  8. #8
    Succedeva anche prima mi sembra.

  9. #9
    Come risolvo il problema descritto nel post precedente

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.