Drivstoff.java [Last ned]

/*
 * Leser drivstoffsalg (4 ulike typer) fra fil for en enkelt
 * dag. Beregner og skriver tilbake til den samme filen samlet
 * omsetning for hhv. bensin og diesel for denne dagen.
 * Evt. tomme linjer på filen blir bare hoppet over.
 */
 
import static java.lang.Integer.*;
import static java.lang.Double.*;
import static javax.swing.JOptionPane.*;
import java.util.*;
import java.io.*;
 
public class Drivstoff {
 
  public static void main(String[] args) {
    String filnavn = showInputDialog("Gi filnavn:");
    try {
      // Inndatastrøm åpnes
      File fil = new File(filnavn);
      Scanner leser = new Scanner(fil);
      double sumLB=0, sumLD=0, sumKrB=0, sumKrD=0;
      while ( leser.hasNextLine() ) {
        String linje = leser.nextLine();
        linje = linje.trim();
        // Fjerner tomme tegn foran og bak i tegnsekvensensen, og
        // om den da blir tom så er den ikke en inndatalinje.
        if ( linje.length() > 0 ) {
          String[] data = linje.split("( )+");
          // Skilletegn på filen er ett eller flere blanke tegn
          // Splitter linjen i tre element:  kode   liter   kr
          char kode = data[0].toUpperCase().charAt(0);
          double liter = parseDouble(data[1]);
          double kr = parseDouble(data[2]);
          if ( kode == 'L' || kode == 'H') {
            sumLB += liter;
            sumKrB += kr;
          }
          else {  // koden er V eller F
            sumLD += liter;
            sumKrD += kr;
          }
        }
      }
      leser.close();
      String ut = "\n" + "Omsetning" + "\n"
                + "Bensin: " + avrund(sumLB) + " liter   "
                + avrund(sumKrB) + " kr " + "\n"
                + "Diesel: " + avrund(sumLD) + " liter   "
                + avrund(sumKrD) + " kr " + "\n";
 
      //  Utdatastrøm åpnes
      FileWriter skrivekobling = new FileWriter(fil, true);
      // Her betyr  Append=true innholdet skal legges til på slutten
      PrintWriter skriver = new PrintWriter(skrivekobling);
      skriver.println(ut);
      skriver.close();
      showMessageDialog(null, "Registrering vellykket!");
    }
    catch (FileNotFoundException e) {
      showMessageDialog(null, "Problem, finner ikke filen!");
    }
    catch (NumberFormatException e) {
      showMessageDialog(null, "Problem, innholdet kan ikke håndteres!");
    }
    catch (Exception e) {
      showMessageDialog(null, "Uidentifisert problem!");
    }
  }
 
  private static int avrund(double tall) {
  // Hjelpemetoden avrunder til nærmeste heltall
     return (int)(tall + 0.5);
  }
 
}
Kildekode blir vist ved hjelp av GeSHi.