/****************************************************************************** * This program computes the median of a list of float values on STDIN. * * Copyright © 2021 Richard Lesh. All rights reserved. *****************************************************************************/ import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.pureprogrammer.Utils; public class MedianFilter { public static void main(String[] args) { String line; double d; int count = 0; List values = new ArrayList<>(); while ((line = Utils.getline()) != null) { line = Utils.trim(line); try { d = Double.parseDouble(line); values.add(d); ++count; } catch (Exception ex) { if (Utils.cpLength(line) > 0) { System.out.println(Utils.join("", "Can't parse input: ", line)); } } } values = Utils.sort(values); if (count > 0) { double median; if (count % 2 == 1) { median = values.get((count - 1) / 2); } else { int middle = count / 2; median = (values.get(middle) + values.get(middle - 1)) / 2.0; } System.out.println(Utils.format("{0:g}", median)); } } }