package tiedosto;

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

import fi.jyu.mit.ohj2.Mjonot;

/**
 * Lukujen lukeminen tiedostosta iteraattorilla ScannerF-luokkaa k�ytt�en
 * Vikana se, ett� ei voi iteroida kahta kertaa.
 * @author Vesa Lappalainen
 * @version 1.0, 05.03.2007
 */
@SuppressWarnings("javadoc")
public class TiedKaScannerI {

    public static class ScannerF implements Iterable<String>, Closeable {
        private Scanner scanner;
        @SuppressWarnings("resource")
        public ScannerF(String filename) throws FileNotFoundException {
            scanner = new Scanner(new FileInputStream(new File(filename)));
        }
        @Override  public Iterator<String> iterator() { return scanner;  }
        @Override  public void close() { scanner.close(); }
    }


    @SuppressWarnings("resource")
    public static void main(String[] args) {
        ScannerF fi;

        try { // Avataan tiedosto lukemista varten
            fi = new ScannerF("luvut.dat");
        } catch (FileNotFoundException ex) {
            System.err.println("Tiedosto ei aukea! " + ex.getMessage());
            return;
        }

        double summa = 0;
        int n = 0;

        try {
            double luku;
            for (String s : fi) {
                try {
                    luku = Double.parseDouble(s);
                    summa += luku;
                    n++;
                } catch (NumberFormatException ex) {
                    // hyl�t��n
                }
            }
        } finally {
            fi.close();
        }

        double ka = 0;
        if (n > 0) ka = summa / n;
        System.out.println("Lukuja oli " + n + " kappaletta.");
        System.out.println("Niiden summa oli " + Mjonot.fmt(summa, 4, 2));
        System.out.println("ja keskiarvo oli " + Mjonot.fmt(ka, 4, 2));
    }
}