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

    [Java] ordinamento file aperto con BufferReader

    Salve utenti.

    Ho un piccolo problema che non posso risolvere.

    Inizializzando una variabile di tipo BuferedReader dovrei aprire il file che in precedenza avevo creato, prendere ogni righa del file e visualizzarlo a video in ordine alfabetico per cognome ...ha quasi dementicavo il file contine alcuni dati personali di persona ed e cosi composto:
    dati.txt
    cognome_persona;nome_persona;sesso_persona;età_per sona*****************************
    cognome;nome;sesso;età**************************** ********************************
    come potete vedere per ogni riga ho stabilito una dimensione fissa per le altre riempita da tanti asterischi partendo dall'ultimo byte della riga + 1 ed arrivando alla mia dimensione stabilita.

    ora vorrei visualizzare a video i dati nel file ordinati per cognome (se è possibile senza usare le Array).

    Havete qualche idea per fare ciò?

  2. #2
    Eccoti un esempio fatto al volo:

    Codice PHP:
    import java.io.*;
    import java.util.*;

    public class 
    SortFile {

        public static 
    void main(String[] args) {
            
    // Creo una lista ordinata
            
    SortedSet set = new TreeSet();

            
    // Leggo il file
            
    try {
                
    BufferedReader in = new BufferedReader(new FileReader("users.txt"));
                
    String str;
                while ((
    str in.readLine()) != null) {
                    
    // Aggiungo la riga alla lista
                    
    set.add(str);

                }
                
    in.close();
            } catch (
    IOException e) {
            }

            
    // Iterazione degli elementi della lista
            
    Iterator it set.iterator();
            while (
    it.hasNext()) {
                
    // Ottengo e stampo gli elementi
                
    Object element it.next();
                
    System.out.println(element);
            }

        }


    Gutta cavat lapidem
    [La goccia scava la pietra]
    ***
    (Ovidio)

  3. #3
    Siccome non è che studio il java da solo, ma in un corso, non conosciamo ancora il tipo SortedSet, qualche altra idea per farlo, io ho provato tante di quelle volte, ma non mi so come risolvere

    chiedevo supporto in questo forum, ma nn ho detto che nn specificato bene i tipi di variabile che so usare.

    Cmq, mi serverebbe, ad esempio una struttura che permette di visualizzare dal file le righe ordinate alfabbeticamente, senza il SortedSet che ancora non lo conosco e senza modificare il file che si sta ordinando.

    come potrei farlo?

  4. #4
    Nel primo messaggio dicevi che non volevi usare la classe Array (che ha anche un metodo sort) ed ora non vuoi usare il SortedSet... facciamo prima se ti chiedo con quale struttura dati vorresti lavorare a questo punto
    Gutta cavat lapidem
    [La goccia scava la pietra]
    ***
    (Ovidio)

  5. #5
    il medoto sort non l'abbiamo ancora fatto, in precedenza abbiamo fatto l'ordinamento sempre utilizzando l'array, ma da quello che mi e stato detto nell'esercizio che mi e stato posto non devo utilizzare un'array per ordinare i dati, quindi non saprei che struttura dati usare.

  6. #6
    sei molto ma molto vago....cmq scrivi il testo dell'esercizio e lo capiamo.
    Cmq non usare un metodo solo perchè non si è ancora studiato lo concepisco poco.
    Gutta cavat lapidem
    [La goccia scava la pietra]
    ***
    (Ovidio)

  7. #7
    Fino ad ora il codice è questo:
    codice:
    import java.io.*;
    import java.util.*;
    import java.lang.*;
    class file 
    {
       RandomAccessFile _File;
       String Url = "Dati.txt";
       // Medoto per l'apertura o la creazione del file.
       public void Apertura (String Metodo)
       {
          try {
             _File = new RandomAccessFile(Url, Metodo);
          }catch (IOException e) { System.out.println("Problema nell'apertura del file."); }
       }
       // Medoto di scrittura all'interno del file.
       public String Scrittura (String dato)
       {
          try {
             long Dim = _File.length();
             _File.seek(Dim);
             _File.writeBytes(dato);
          }catch (IOException e) { System.out.println("Problema nella scrittura sul file."); }
          return dato;
       }
       // Medoto per l'ordinamento dei dati nel file.
       /*public void Ordina()
       {
       
       }*/
       public void Chiusura ()
       {
          try {
             _File.close();
          }catch (IOException e) { System.out.println("Problema nella chiusura del file."); }
       }
    }
    class dato
    {
    	long Dim_random = 25;
    	String Cognome, Nome;
    	char Sesso;
    	int Età;
    	// Medoto nuovo.
    	public void Nuovo(String cognome, String nome, char sesso, int età)
    	{
    	   this.Cognome = cognome;   this.Nome = nome;
    	   this.Sesso = sesso;       this.Età = età;
    	}
    	// Medoto per la concatenazione della stringa.
    	public String Unione (String cognome, String nome, char sesso, int età)
    	{
    	   String Concatenata = cognome + ";" + nome + ";" + sesso + ";" + età;
    	   return Concatenata;
    	}
    	// Medoto per ridemensionare la stringa segondo una dimensione random.
    	public String Ridimensiona (String dato)
    	{
    	   int i, dim = dato.length();
    	   for (i = dim; i < Dim_random; i++)
    	      dato+="*";
    	   return dato;
    	}
    }
    class Principale
    {
       // Medoto main.
       public static void main(String[] args)
       {
          String cognome, nome, sesso_temp;
          char sesso;
          int età, ripeti = 1;
          Scanner Tast = new Scanner(System.in);
          file obj = new file();
          dato obj1 = new dato();
          while (ripeti != 0) 
          {
             System.out.print("Cognome: ");   cognome = Tast.nextLine();
             System.out.print("Nome: ");      nome = Tast.nextLine();
             System.out.print("Sesso: ");     sesso_temp = Tast.nextLine();
             System.out.print("Età: ");       età = Tast.nextInt();
             sesso = sesso_temp.charAt(0);
             obj1.Nuovo(cognome, nome, sesso, età);
             String Stringa = obj1.Unione(cognome, nome, sesso, età);
             obj1.Ridimensiona(Stringa);
             obj.Apertura("w");
             obj.Scrittura(Stringa);
             obj.Chiusura();
             System.out.println("1 = Continua l'inserimento; 0 = Ferma e visualizza tutto:");
             ripeti = Tast.nextInt();
          }
       }
    }
    come vedi non ho fatto ancora il metodo per l'ordinamento perche non ho idea di come farlo.

    Nn ho il testo dell'esercizio, il prof. ce lo dice man mano che facciamo delle domande come fare il programma.

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.