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

    I/O array ordine

    Ciao a tutti, ho questo codice:
    codice:
    import java.io.*;
    class IOarray{
    public static void main(String[] argomenti){
    System.out.println("Metti:");
    BufferedReader IN=new BufferedReader(new InputStreamReader(System.in));
    String[] my=new String[100];
    String appoggio=new String();
    
    int i=0;
    do{
    	i++;
    	try{my[i]=IN.readLine();}
    	catch(IOException e){}
    }while(my[i].compareTo("end")!=0);
    int vettore=0, x=0;
    do{
    	vettore++;
    }while(my[vettore].compareTo("end")!=0));
    int count=vettore-1;
    for(x=0;x<=count;x++){
    	for(int k=0;i<=(count-x-1);k++){
    		if(my[k].compareTo(my[k+1])>=1){
    			appoggio=my[k];
    			my[k]=my[k+1];
    			my[k+1]=appoggio;
    		}
    	}
    }
    
    
    for(int k=0;k<=i;k++){
    	System.out.println("-"+my[k]);
    }
    }
    }
    questo funziona perché prende le stringhe, ma però non le riordina perché??
    Premetto che con le stringhe inserite nel programma e non prese dall'utente funziona alla perfezione!!!
    Grazie
    Ci provo...e ci riesco!!!
    http://kings.altervista.org

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    315
    Secondo me hai fatto un po' di confusione tra gli indici, ad esempio dovresti far partire i da -1 e non da 0, altrimenti il primo valore dell'array e' sempre null, poi non capisco il motivo di fare un secondo ciclo do-while... forse per controllare il numero di righe immesse? Per quello puoi usare la variabile i.
    Per lo stesso motivo penso che potresti evitare anche l'utilizzo di count.
    Da ultimo l'ordinamento non funziona perche' nel 2° ciclo for hai scritto i<=(count-x-1) invece di k<=(count-x-1).
    Pero' se correggi ti trovi ancora qualche problema con gli indici.
    Prova con questa versione, se non ti e' chiaro qualcosa chiedi pure:
    codice:
    import java.io.*;
    
    class IOarray{
      public static void main(String[] argomenti){
        System.out.println("Metti:");
        BufferedReader IN=new BufferedReader(
                 new InputStreamReader(System.in));
        String[] my=new String[100];
        int i = -1;
        do{
          i++;
        try {
          my[i]=IN.readLine();
        } catch(IOException e){
          e.printStackTrace();
        }
        } while(my[i].compareTo("end")!=0);
    
        for(int j = 0; j < i; j++){
          for(int k = 0; k < (i-j-1); k++){
            if(my[k].compareTo(my[k+1]) > 0){
              String appoggio = my[k];
              my[k] = my[k+1];
              my[k+1] = appoggio;
            }
          }
        }
        System.out.println("Risultato:\n\n");
        for(int j=0; j<i; j++)
          System.out.println("\t- "+my[j]);
      }
    }
    Ciao,
    Lorenzo

  3. #3
    Grazie mi hai salvato la vita!!! :mavieni: :metallica
    Ci provo...e ci riesco!!!
    http://kings.altervista.org

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.