Median.java [Last ned]

/*
 * Programmet leser høydedata fra fil, jentenes
 * høyde på første linje og guttenes på andre.
 * Både jentenes og guttenes medianhøyde beregnes
 * og skrives inn til slutt på samme fil.
 * Høyder er skilt av ett eller flere blanke tegn.
 */
import static java.lang.System.*;
import static java.lang.Integer.*;
import static javax.swing.JOptionPane.*;
import java.io.*;
import java.util.*;
 
public class Median {
 
  public static void main(String[] args) {
    try {
      String filnavn = showInputDialog("Gi filnavn:");
      File fil = new File(filnavn);
      Scanner leser = new Scanner(fil);
 
      // Første linje inneholder jentenes høyder
      String linje = leser.nextLine();
      String[] dataTab = linje.split("( )+");
      int[] jenteHøyder = new int[dataTab.length];
      for (int i=0; i<dataTab.length; i++)
        jenteHøyder[i] = parseInt(dataTab[i]);
 
      // Andre linje inneholder guttenes høyder
      linje = leser.nextLine();
      dataTab = linje.split("( )+");
      int[] gutteHøyder = new int[dataTab.length];
      for (int i=0; i<dataTab.length; i++)
        gutteHøyder[i] = parseInt(dataTab[i]);
 
      leser.close();
 
      FileWriter skrivelink = new FileWriter(filnavn, true);
      PrintWriter skriver = new PrintWriter(skrivelink);
      skriver.println("\n"+"Jentemedian: " + median(jenteHøyder)
                    + "\n"+"Guttemedian: " + median(gutteHøyder) );
      skriver.close();
    }
    catch (Exception e) {
      out.println("Problemer med fildata: " + e.toString());
    }
  }
 
  private static int median(int[] tab) {
    int median = 0;
    Arrays.sort(tab);
      int midten = tab.length/2;
      if ( tab.length % 2 == 1 )
        median = tab[midten];
      else
        median = (tab[midten-1]+tab[midten])/2;
    return median;
  }
}
 
Kildekode blir vist ved hjelp av GeSHi.