From DojoWiki
package org.pghcodingdojo.k4;
import java.io.File;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
/**
* Java solution to Code Kata 4, Weather Problem
*/
public class App
{
public static void main( String[] args )
{
int highestDay = 0;
int lowestDay = 0;
int highest = Integer.MIN_VALUE;
int lowest = Integer.MAX_VALUE;
try{
String dataFileName = args[0];
File dataFile = new File(dataFileName);
BufferedReader reader = new BufferedReader(new FileReader(dataFile));
ArrayList data = new ArrayList();
while(reader.ready()){
String buffer = reader.readLine();
if(buffer.length() > 14){
char three = buffer.charAt(3);
if(Character.isDigit(three)){
int day = Integer.parseInt(buffer.substring(0,4).trim());
int high = Integer.parseInt(buffer.substring(6,8).trim());
int low = Integer.parseInt(buffer.substring(12,14).trim());
int[] values = new int[]{day,high,low};
data.add(values);
}
}
}
reader.close();
// now find the highest and lowest splits
for(int i=0; i < data.size(); i++){
int[] v = (int[]) data.get(i);
int spread = v[1] - v[2];
if(spread < lowest){
lowest = spread;
lowestDay = v[0];
}
else if(spread > highest){
highest = spread;
highestDay = v[0];
}
}
if(lowestDay != 0)
System.out.println("Lowest spread on day "+lowestDay+" with a spread of only "+lowest+" degrees");
if(highestDay != 0)
System.out.println("Highest spread on day "+highestDay+" with a spread of "+highest+" degrees");
}catch(Exception e){
e.printStackTrace();
}
}
}