Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17

Discussione: problema file

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    123

    problema file

    Sempre soliti problemi con i file, però penso che dopo aver visto questo caso riesco a gestirmi quasi in ogni situazione...

    ho un file di testo :
    7 12 55 7
    4 98 23 5
    111 3 87 2


    80

    io devo stampare tutti i numeri maggiori di 80...ma questo numero pivot(cioè 80) è presente
    nel file alla fine e distanziato di una riga e non so come beccarlo...
    Quindi il programma deve restituire come valore di ritorno un nuovo array contenente tutti e soli gli elementi maggiori del numero pivot
    Per il momento ho fatto solo la parte di codice che va in lettura nel file e mi sembra vada bene...
    codice:
    public static void main(String[] args) {
            // TODO code application logic here
            try
            {
                Scanner sc = new Scanner(new FileReader("prova.txt"));
                while(sc.hasNext())
                {
                    String linea = sc.nextLine();
                    System.out.println(linea);
                }
            }
            catch(FileNotFoundException e)
            {
                System.out.println("File non trovato");
            }
            catch(IOException e)
            {
                System.out.println("File corrotto");
            }
        }

  2. #2
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Se il formato del file è rigidamente questo:

    RIGA_CON_NUMERI_1
    RIGA_CON_NUMERI_2
    RIGA_CON_NUMERI_3
    . . .
    RIGA_CON_NUMERI_N
    <RIGA_VUOTA>
    RIGA_CON_NUMERO

    esegui un ciclo finchè lo scanner non ti restituisce una linea vuota; a quel punto esci dal ciclo e leggi la riga successiva che contiene il tuo numero pivot

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: problema file

    Originariamente inviato da bobo24
    ma questo numero pivot(cioè 80) è presente
    nel file alla fine e distanziato di una riga e non so come beccarlo...
    Ci sono almeno 2 strade:
    a) Scansioni 2 volte il file (cioè apri/leggi/chiudi 2 volte), la prima volta solo per cercare il pivot, la seconda volta solo per leggere e "filtrare" i numeri sapendo il pivot.
    b) Scansioni solo 1 volta il file, i numeri li leggi e li memorizzi in un array o collezione (a tua scelta, in base anche a cosa conosci) e poi dopo aver letto il pivot vai a "filtrare" leggendo i numeri in memoria.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    123
    Dopo la chiusura del while avevo pensato di aggiungere questo
    codice:
    if(sc.hasNext())
                {
                    System.out.println("Il pivot è : " +sc.hasNext());
                }
    ma penso sia sbagliato...forse è meglio che non uso per leggere il file lo Scanner e passo al metodo con il BufferedReader che magari ha metodi migliori??? cosa dite???

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da bobo24
    forse è meglio che non uso per leggere il file lo Scanner e passo al metodo con il BufferedReader che magari ha metodi migliori??? cosa dite???
    Se tutti i numeri, pivot compreso, sono separati tra di loro da "whitespace" (spazi/tab/newline), allora Scanner è sufficiente. L'ultimo "token" sarà il pivot.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    123
    ragazzi....ho bisogno di un'anima buona...
    vi giuro che è tutto il pomeriggio che ci provo...ancora non ce l'ho fatta...
    ho provato a ragionarci anche con calma con carta e penna ma niente da fare...

  7. #7
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Sto uscendo e sono di corsa... ma semplicemente una cosa del genere?

    codice:
    public static void main(String[] args)
    {
    // TODO code application logic here
      try
      {
        Scanner sc = new Scanner(new FileReader("prova.txt"));
        while(sc.hasNext())
        {
          String linea = sc.nextLine();
    
          if (linea.length() == 0)
          {
            break;
          }
    
          System.out.println(linea);
        }
    
        System.out.println(sc.nextLine());
      }
      catch(FileNotFoundException e)
      {
        System.out.println("File non trovato");
      }
      catch(IOException e)
      {
        System.out.println("File corrotto");
      }
    }

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da bobo24
    ragazzi....ho bisogno di un'anima buona...
    vi giuro che è tutto il pomeriggio che ci provo...ancora non ce l'ho fatta...
    ho provato a ragionarci anche con calma con carta e penna ma niente da fare...
    Le anime buone vanno aiutate: quindi, posta il codice che hai scritto così possiamo vedere dove sbagli... farti fare il codice completo dagli altri non è né corretto (il regolamento lo vieta), né costruttivo (non impari nulla o quasi).


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Ovviamente Lele ha ragione: e difatti io ho semplicemente preso il primo codice che hai postato e ci ho aggiunto tre righe. Se nel frattempo hai sviluppato qualcosa di nuovo, postalo e ci possiamo dare un'occhiata

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    123
    Si si, ovvio...infatti la richiesta di anima buona era solo riferita al fatto di qualcuno che potesse darmi qualche consiglio in più rispetto ai precedenti...ho detto anima buona perchè avendo stressato per tutto il giorno quelli di questo forum pensavo mi avrebbero mandato a quel paese...

    Comunque il mio codice era praticamente simile a quello postato sopra da desa, dove praticamente la prima System mi stampa ogni linea, mentre la seconda ovvero quella fuori dal while mi stampa il pivot...
    ora avevo pensavo di mettere questo pivot in una variabile intera, e poi confrontare...ma viene richiesto che la variabile sia String...quindi sono bloccato da ormai non so quanto tempo in questo punto....

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.