/* * Write an application that reads daily temperatures for 12 months and allows * the user to get statistics. Support at least three options: monthly average * of a given month, yearly average, and lowest and highest temperatures of a * given month. Use a text file to store temperatures. A line in the text file * contains daily temperatures for one month. The first line in the text file * contains temperatures for January; the second line, those for February; and * so forth. Using StringTokenizer to parse a line into temperatures of type * float. For a data structure, consider using either an array of Month or a * two-dimensional array of float. Month is a class you define yourself. */ import java.io.*; import java.util.*; import java.text.*; class homeWork6 { public static void main( String[] args) throws IOException { File inFile = new File("templog.txt"); FileReader fileReader = new FileReader(inFile); BufferedReader bufReader = new BufferedReader(fileReader); DecimalFormat df = new DecimalFormat("0.00"); float[] days = new float[31]; float[] months = new float[12]; String[] monthName = { "Jan", "Feb", "Mar", "Apr", "May", "June", "July", "Aug", "Sept", "Oct", "Nov", "Dec" }; float min = 0, max = 0, avgy = 0, sumy = 0; float lol = 0; Month data; for(int i = 0; i < 12; i++) { String str = bufReader.readLine(); StringTokenizer parser = new StringTokenizer(str); int count = 0; while(parser.hasMoreTokens()) { String next = parser.nextToken(); float newvar = Float.parseFloat(next); days [count]= newvar; count++; } data = new Month(); max = days[0]; min = days[0]; for(int j = 0; j < 31; j++) { data.setTemp(days[j]); //System.out.println(data.getTemp()); if (max < days[j]){ max = days[j]; } data.setMax(max); if (min > days[j]){ min = days[j]; } data.setMin(min); } //System.out.println(monthName[i] + ": AVG = " + df.format(data.getAvgM()) + " MIN = " + df.format(data.getMin()) + " MAX = " + df.format(data.getMax())); int count2 = 0; months [count2] = data.getAvgM(); sumy += data.getAvgM(); } for(int j = 0; j < 12; j++) { System.out.println(df.format(months[j])); } System.out.println("Yearly: SUM = " + df.format(sumy)); avgy = sumy / 12; System.out.println("Yearly: AVG = " + df.format(avgy)); bufReader.close(); } } class Month { float temp, summ, avgm, sumy, avgy, min1, max1; public void setTemp(float days) { temp = days; summ += temp; } public void setMax(float max) { max1 = max; } public void setMin(float min) { min1 = min; } public float getTemp() { return temp; } public float getAvgM() { avgm = summ / 31; return avgm; } public float getMax() { return max1; } public float getMin() { return min1; } }