Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    27

    gestione del PRINtWRITER

    DATI DI INPUT
    Il file input.txt contiene l'importo del prelievo. Il file è costituito da un'unica riga di testo,
    contenente un numero (senza puntini o virgole che raggruppano le cifre a tre a tre!).
    DATI DI OUTPUT
    Il programma, dopo aver letto il file di input, deve calcolare il numero di banconote necessario
    per ognuno dei tagli disponibili, e scriverlo su un file di nome output.txt. Più precisamente, il
    file output.txt deve contenere cinque righe, che corrispondono (in ordine, dalla prima
    all'ultima) alle banconote da 100.000, 10.000, 5.000, 2.000 e 1.000. Ogni riga deve contenere
    un unico numero intero, che rappresenta il numero di banconote di quel taglio necessarie.

    Esempio:
    File input.txt
    152000
    Fìle output.txt
    1
    5
    0
    1
    0


    solo che sull'OUTPUT invece di stampare 1 caporiga 5 caporiga 0 caporiga 1 caporiga 0,,,,, mi stampa solo l'ultimo valore cioè 0 sul file di output,,,, qualcuno mi aiuti?? e magari anche su come migliorarlo?? ,, grazie,,,

    codice:
    import java.util.Scanner;
    import java.io.*;
    import java.io.PrintWriter;
    import java.io.File;
    import java.io.IOException;
    
    class Camillo{
            public static void main(String[] args) throws Exception{
            Scanner filein=new Scanner (new FileInputStream("dati.txt"));
    
            int soldi, resto, ask;
            int countc[]= new int[5];
            int b;
    
    
            soldi=filein.nextInt();
            filein.close();
    
                countc[0] =soldi / 100000;
                resto= soldi % 100000;
                soldi = resto;
    
                countc[1] = soldi / 10000;
                resto = soldi % 10000;
                soldi = resto;
    
                countc[2] = soldi / 5000;
                resto = soldi % 5000;
                soldi = resto;
    
                ask= soldi / 2000;
    
                    if (ask == 0)
                        countc[3] = ask;
    
                    else {
                        countc[3]= ask;
                        resto = soldi % 2000;
                        soldi = resto;
                    }
    
                countc[4]= soldi / 1000;
    
    
                for(int a=0; a<5; a++){
                    b = countc[a];
                     try {
                        File my_file = new File("output.txt");
                        PrintWriter pw = new PrintWriter(my_file);
                        pw.println(b);
                        pw.close();
                     }
                     catch(IOException eccezione){
                        System.out.println("Errore di apertura del file di uscita");
                     }
                 }

  2. #2

    Re: gestione del PRINtWRITER

    codice:
                for(int a=0; a<5; a++){
                    b = countc[a];
                     try {
                        File my_file = new File("output.txt");
                        PrintWriter pw = new PrintWriter(my_file);
                        pw.println(b);
                        pw.close();
                     }
                     catch(IOException eccezione){
                        System.out.println("Errore di apertura del file di uscita");
                     }
                 }
    E' ovvio, ad ogni ciclo del for inizializzi un nuovo oggetto File ed una nuova istanza di PrintWriter. Così facendo sovvrascrivi il file ad ogni ciclo. Invece devi fare:


    codice:
                File my_file = new File("output.txt");
                PrintWriter pw = new PrintWriter(my_file);
    
                for(int a=0; a<5; a++){
                    b = countc[a];
                     try {
    
                        pw.println(b);
                     }
                     catch(IOException eccezione){
                        System.out.println("Errore di apertura del file di uscita");
                     }
                 }
    
                        pw.close();
    ps da notare la chiusura dello PrintWriter fuori dal ciclo!


    ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    27

    re

    codice:
    import java.util.Scanner;
    import java.io.*;
    import java.io.PrintWriter;
    import java.io.File;
    import java.io.IOException;
    
    class Camillo{
            public static void main(String[] args) throws Exception{
            Scanner filein=new Scanner (new FileInputStream("dati.txt"));
    
            int soldi, resto, ask;
            int countc[]= new int[5];
            int b;
    
    
            soldi=filein.nextInt();
            filein.close();
    
                countc[0] =soldi / 100000;
                resto= soldi % 100000;
                soldi = resto;
    
                countc[1] = soldi / 10000;
                resto = soldi % 10000;
                soldi = resto;
    
                countc[2] = soldi / 5000;
                resto = soldi % 5000;
                soldi = resto;
    
                ask= soldi / 2000;
    
                    if (ask == 0)
                        countc[3] = ask;
    
                    else {
                        countc[3]= ask;
                        resto = soldi % 2000;
                        soldi = resto;
                    }
    
                countc[4]= soldi / 1000;
    
    
                File my_file = new File("output.txt");
                PrintWriter pw = new PrintWriter(my_file);
    
                for(int a=0; a<5; a++){
                    b = countc[a];
                     try {
    
                        pw.println(b);
                     }
                     catch(IOException eccezione){
                        System.out.println("Errore di apertura del file di uscita");
                     }
                 }
    
                        pw.close();
        }
    }
    ho fatto quello che mi hai detto,, cioè ho copiato il codice che mi hai dato ,, solo che mi dà errore sul CATCH,,,,,

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

    Re: re

    Originariamente inviato da Avatar89
    ho fatto quello che mi hai detto,, cioè ho copiato il codice che mi hai dato ,, solo che mi dà errore sul CATCH,,,,,
    PrintStream e PrintWriter gestiscono la eccezione IOException in modo particolare, i loro metodi non lanciano mai IOException (ne possono lanciare altre ma non IOException).
    In sostanza stai cercando di catturare una eccezione che il compilatore sa già che non verrà mai lanciata dalla println(), quindi è un errore (il codice nel catch non è "reachable" ... raggiungibile).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    27

    re

    e quindi in sostanza non serve il CATCH?? basta cancellarlo???

    poi, mi hai detto che esistono delle altri metodi al posto dl IOException,, cosa posso mettere al posto di quel codice??

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

    Re: re

    Originariamente inviato da Avatar89
    e quindi in sostanza non serve il CATCH?? basta cancellarlo???
    Sì.

    Originariamente inviato da Avatar89
    poi, mi hai detto che esistono delle altri metodi al posto dl IOException,, cosa posso mettere al posto di quel codice??
    Le altre eccezioni che alcuni (e ripeto alcuni ... non tutti) metodi di PrintWriter possono lanciare sono "unchecked" e se sbucano fuori, è un tuo baco, non una cosa che devi gestire e controllare tassativamente.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.