Scrivere numeri interi su file di testo

di il
6 risposte

Scrivere numeri interi su file di testo

Salve a tutti, dovrei scrivere un programma che genera, in un ciclo, 100 numeri da 0 a 100, e poi li stampa su di una singola riga di un file. Ho provato a scrivere questo codice:
package Esercitazioni;
import java.io.*;
public class DaZeroACento {

	public static void main(String[] args) {
		try {
			int next = -1;
			
			BufferedWriter writer = new BufferedWriter(new FileWriter("C:\\Users\\Salvo\\eclipse-workspace\\Esercitazioni\\bin\\Esercitazioni\\prova.txt"));
		
		
			for (int i = 0; i<=100; i++) {
				next++;
				
				writer.write(next);
				
				
			}
			
			
			
			writer.flush();
			writer.close();
		
		
		}
		catch (IOException e) {
			
			System.out.println("Errore di I/O");
			System.out.println(e);
		}
		
		
		
		

	}

}
Il problema credo sia il fatto che BufferedWriter dia come output solo caratteri, così quando vado a controllare il file "prova.txt" vedo che sono stati scritti una serie di simboli, numeri da 1 a 9 e tutto l'alfabeto. Ho provato anche a fare un cast (writer.write((int)next), ma non ho risolto nulla. Sapete come fare in modo di stampare i numeri interi generati dal ciclo in un file di testo? Grazie mille.

6 Risposte

  • Re: Scrivere numeri interi su file di testo

    package Esercitazioni;
    import java.io.*;
    
    public class DaZeroACento {
        public static void main(String[] args) throws IOException {   
    	BufferedWriter writer = new BufferedWriter(new FileWriter("C:\\Users\\Salvo\\eclipse-workspace\\Esercitazioni\\bin\\Esercitazioni\\prova.txt"));
    	Integer next = -1;
            while(++next <= 100)
                writer.write(next.toString() + " ");
            writer.close();              
        }   
    }
    
  • Re: Scrivere numeri interi su file di testo

    @Weierstrass, MA DAI !!!!

    Vuoi proprio fare boxing/unboxing ad OGNI interazione SOLO per convertire un intero in una stringa???

    Ad un'esame, ti boccerei all'istante
    Anzi, come disse un mio prof, ti ""defenestrerei""

    Ci sono i metodi ""String.valueOf(...)" e "Integer.toXXXString(...)" ...
  • Re: Scrivere numeri interi su file di testo

    ytreka ha scritto:


    writer.write(next);
    vedo che sono stati scritti una serie di simboli, numeri da 1 a 9 e tutto l'alfabeto.
    Il write che hai usato scrive 1 carattere. Se passi 100, è il carattere con codice 100 (che per la cronaca in ASCII è la lettera "d").
    Se vuoi che nel file ci sia scritto 100, vuol dire scrivere 3 caratteri: '1' '0' e '0'. Ovvero serve scrivere una stringa che contiene "100".
    Pertanto serve l'altro write, il write(String str)

    E per ottenere una stringa dal valore int ci sono svariati metodi:

    - concatenare una stringa vuota al numero int: ""+next
    - o meglio usare String.valueOf(int): String.valueOf(next)
    - alternativamente, mettere un PrintWriter "al di sopra" del BufferedWriter. PrintWriter ha dei comodi print(int), print(long) ecc... (oppure usare PrintWriter al posto di BufferedWriter se la "bufferizzazione" non è rilevante per l'esercizio).
  • Re: Scrivere numeri interi su file di testo

    migliorabile ha scritto:


    @Weierstrass, MA DAI !!!!

    Vuoi proprio fare boxing/unboxing ad OGNI interazione SOLO per convertire un intero in una stringa???

    Ad un'esame, ti boccerei all'istante
    Anzi, come disse un mio prof, ti ""defenestrerei""

    Ci sono i metodi ""String.valueOf(...)" e "Integer.toXXXString(...)" ...
    Infatti è una soluzione inefficiente, non vedo cosa ci sia di male a proporla visto che chiaramente è all'inizio.
  • Re: Scrivere numeri interi su file di testo

    PROPRIO perche' e' agli inizi, non e' il caso di proporre soluzioni ""balzane"" basate su funzionalita' ""specifiche"" di Java (il boxing/unboxing), e, per un principiante, incomprensibili, quando ci sono soluzioni ""formalmente piu' corrette"" (i metodi di cui sopra implementati PROPRIO per questo scopo).
  • Re: Scrivere numeri interi su file di testo

    Grazie a tutti per le risposte, ho risolto. Il codice l'ho scritto in questo modo:
    package Esercitazioni;
    import java.io.*;
    public class DaZeroACento {
    
    	public static void main(String[] args) {
    		try {
    			int next = -1;
    			String space = new String (" ");
    			
    			BufferedWriter writer = new BufferedWriter(new FileWriter("C:\\Users\\Salvo\\eclipse-workspace\\Esercitazioni\\bin\\Esercitazioni\\prova.txt"));
    		
    		
    			for (int i = 0; i<=100; i++) {
    				next++;
    				
    				
    				
    				
    				writer.write(String.valueOf(next));
    				writer.write(space);
    			}
    			
    			
    			
    			writer.flush();
    			writer.close();
    		
    		
    		}
    		catch (IOException e) {
    			
    			System.out.println("Errore di I/O");
    			System.out.println(e);
    		}
    		
    		
    		
    		
    
    	}
    
    }
    
Devi accedere o registrarti per scrivere nel forum
6 risposte