2016-03-31 6 views
2

Ich muss eine doppelte Zahl in eine Datei schreiben und später diese Datei lesen und diese Double, aber ich habe eine ImputMismatchException. Ich habe den Code debugged und das Problem ist, dass der PrintWriter, mit dem ich die Datei geschrieben habe, die Nummer mit einem Punkt schreibt: 12.3. Und die Scanner.nextDouble(), die ich verwendet, diese Zahl zu lesen gibt die ImputMismatchException wenn die imput mag dieses isnt: 12,3Schreibe eine doppelte Zahl für das Lesen später mit Scanner.nextDouble()

Hier mein Code zu writte ist:

public void crearVentaNueva(int codigo, double precio, String nombre) throws IOException { 
    FileWriter fw = new FileWriter(archivoVentas, true); 
    PrintWriter pw = new PrintWriter(fw); 

    pw.println(codigo + " dato " + nombre + " dato " + precio + " dato "); 

    pw.close(); 
    fw.close(); 

    nVentas++; 
    ventas.add(new Venta(codigo, precio, nombre)); 
} 

Und hier ist mein Code zum Lesen:

Was könnte ich tun, haben Sie nicht diese ImputMismatchException und lesen Sie die Nummer richtig?

Das ist mein erster Beitrag und vielleicht mache ich ein paar Fehler mit meiner Grammatik, weil ich Spanisch bin und nicht gut Englisch spreche.

Vielen Dank für Ihre Zeit.

Antwort

2

versuchen, die Scanner Verwendung einer geeigneten locale zu initialisieren, so dass Punkte und Kommata richtig behandelt werden, wie folgt aus:

FileReader fr = new FileReader(archivoVentas); 
Scanner scanner = new Scanner(fr).useLocale(Locale.US); 
2

Sie können die überladenen String.format Methode verwenden und die entsprechende locale angeben, wie in:

String.format(Locale.FRANCE, "%.2f", someDouble);