Problem z rozpoznawaniem double w pliku tekstowym

0
import java.io.*;
import java.util.*;

public class Main {

    public static void main(String args[])  throws IOException {

        int count = 0;
        double sum = 0.0;

        // Zapisuje dane wyjściowe w pliku tekstowym.
        FileWriter fout = new FileWriter("test.txt");

        // Wartości są teraz umieszczane na liście oddzielonej przecinkami.
        fout.write("2,     2.3,     2,     gotowe");
        fout.close();

        FileReader fin = new FileReader("test.txt");

        Scanner src = new Scanner(fin);

        // Ustawia zbiór separatorów złożony z przecinka i spacji.
        src.useDelimiter(", *");

        // Odczytuje i sumuje liczby.
        while(src.hasNext()) {
            if(src.hasNextDouble()) {
                sum += src.nextDouble();
                count++;
            }
            else {
                String str = src.next();
                if(str.equals("gotowe")) break;
                else {
                    System.out.println("Błąd");
                    return;
                }
            }
        }

        src.close();
        System.out.println("Średnia wynosi " + sum / count);
    }
}

Problem w tym, że to nie działa. Jeśli usunę sobie 2.3 z FileWriter to wszystko jest ok. Przecież w Javie double są zapisywane z kropką więc o co chodzi. Tak w ogóle to przykład z książki :)

2

Java dostosowuje się do ustawień lokalnych komputera. Jeżeli w pliku są tylko liczby z "kropką", to

scr.useLocale(new Locale("en"));
0

Zamiast:

FileReader fin = new FileReader("test.txt");

Użyj

File fin = new File("test.txt");

Mogą być też i zmienne lokalne jak pisał wyżej @bogdans, ale miałem podobny problem, a File lepiej mi zadziałał.

1 użytkowników online, w tym zalogowanych: 0, gości: 1