Scrivere metodo dato un file di caratteri

di il
5 risposte

Scrivere metodo dato un file di caratteri

Ciao a tutti , devo scrivere un metodo che dato il nome di un file di caratteri contenente numeri interi, uno per ogni riga, verifica se il numero dei valori positivi presenti nel file supera quello dei valori negativi.
Questo è quello che sono riuscito a fare. Il problema che riscontro è che mi dice sempre che i valori positivi sono maggiori di quelli negativi anche quando nel file.txt i valori negativi sono maggiori ...Potreste aiutarmi? grazie

 public static String valori(String nomeFile){
       
       int accNeg=0;
       int accPos=0;
        try (FileInputStream bin = new FileInputStream(nomeFile);
                BufferedInputStream bis = new BufferedInputStream(bin);
                DataInputStream lettore = new DataInputStream(bis)) {
            while (lettore.available() != 0) {
                int parziale = lettore.readInt();
                if (parziale > 0) {
                    accPos++; 
                }
                    else if(parziale<0){                            
                            accNeg++;
              }
            }  
        } catch (FileNotFoundException e) {
            System.out.println("File " + nomeFile + " non trovato");
        } catch (IOException e) {
            System.out.println("Errore: " + e.getMessage());
        }
        if(accPos>accNeg){
        return "Valori positivi maggiori di quelli negativi";
        }
        else return "Valori positivi minori o ugali di quelli negativi";
  }
     

5 Risposte

  • Re: Scrivere metodo dato un file di caratteri

    Mandri369 ha scritto:


    devo scrivere un metodo che dato il nome di un file di caratteri contenente numeri interi, uno per ogni riga, verifica se il numero dei valori positivi presenti nel file supera quello dei valori negativi.
    
            try (FileInputStream bin = new FileInputStream(nomeFile);
                    BufferedInputStream bis = new BufferedInputStream(bin);
                    DataInputStream lettore = new DataInputStream(bis)) {
                while (lettore.available() != 0) {
                    int parziale = lettore.readInt();
    [....]     
    La questione è ben più seria .... un file di testo puro (es. .txt) NON va letto con DataInputStream, è completamente inadatto.

    Quindi rivedi pure TUTTO.
  • Re: Scrivere metodo dato un file di caratteri

    Allora vorrei solo capire se è scritta nel modo giusto per file che si possono leggere con DataInputStream
  • Re: Scrivere metodo dato un file di caratteri

    Mandri369 ha scritto:


    Allora vorrei solo capire se è scritta nel modo giusto per file che si possono leggere con DataInputStream
    DataInputStream si usa per leggere file "binari" in cui la sequenza dei byte segue un ben preciso formato/protocollo (e NON sono file intelleggibili con un editor di testo).

    Prova ad aprire es. un file .exe con Notepad ..... non leggi/comprendi quasi nulla, è un file binario!

    Quindi la tua affermazione che vuol dire? Hai un file binario composto da N*4 byte che contiene N interi ciascuno rappresentato dai 4 byte (32 bit) che formano un int?? (oltretutto in Big-Endian, cioè il primo dei 4 byte è quello più significativo)
    Allora quel codice sarebbe sensato ... ma un file del genere non lo scrivi a mano e di certo non con un editor di testo ..
  • Re: Scrivere metodo dato un file di caratteri

    Quindi mi confermi che il codice che ho scritto verifica se il numero dei valori positivi presenti nel file supera quello dei valori negativi ??...
    Voglio solo sapere se ho scritto il codice correttamente...
  • Re: Scrivere metodo dato un file di caratteri

    Mandri369 ha scritto:


    mi confermi che il codice che ho scritto verifica se il numero dei valori positivi presenti nel file supera quello dei valori negativi ??...
    Sì certo, funziona proprio così, la logica del codice è quella che hai appena detto

    Mandri369 ha scritto:


    Voglio solo sapere se ho scritto il codice correttamente...
    Se si tratta di file "binari" come ho detto prima, ok. Se si tratta di file di testo fatti a righe .... hai cannato completamente tutta la lettura.
Devi accedere o registrarti per scrivere nel forum
5 risposte