K4JavaSolution

From DojoWiki

Jump to: navigation, search
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();
      }
      
    }
}
Personal tools