I have a slight problem here. I am writing a program that reads in a lot of hurricane data. As you can see in my code, I have read in information from the hurricane category array(this array keeps track of what category each hurricane was). I am trying to figure out how many (what number) of hurricanes there was in each category. So, I am wondering how I can calculate how many hurricanes are in each category. Does anybody know anything about this?

``````/**
* The purpose of this program is to calculate the average category,
* pressure, and wind speed of all Atlantic Hurricanes which have
* occured from 1980-2006. It also tallys the number of storms in
* each category,
*
* @author John D. Barry
* @date   02/04/2009
*/
import java.util.Scanner;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.*;
public class Hurricanes2
{
public static void main(String[] args) throws IOException
{
int index = 0;
int [] theYears = new int[59];
File years = new File("hurcdata2years.txt");
Scanner inFile = new Scanner(years);

while (inFile.hasNextInt())
{

theYears[index] = inFile.nextInt();
index++;

}

index = 0;
int [] theWindspeed = new int[59];
File windspeed = new File("hurcdata2windspeed.txt");
inFile = new Scanner(windspeed);

while (inFile.hasNextInt())
{

theWindspeed[index] = inFile.nextInt();
index++;

}

index = 0;
int [] thePressure = new int[59];
File pressure = new File("hurcdata2pressure.txt");
inFile = new Scanner(pressure);

while (inFile.hasNextInt())
{

thePressure[index] = inFile.nextInt();
index++;

}

index = 0;
String [] theMonths = new String[59];
File months = new File("hurcdata2months.txt");
inFile = new Scanner(months);

while (inFile.hasNext())
{

theMonths[index] = inFile.next();
index++;

}

index = 0;
String [] theNames = new String[59];
File names = new File("hurcdata2names.txt");
inFile = new Scanner(names);

while (inFile.hasNext())
{

theNames[index] = inFile.next();
index++;

}

index = 0;
int [] theCategory = new int[59];
File category = new File("hurcdata2category.txt");
inFile = new Scanner(category);

while (inFile.hasNextInt())
{

theCategory[index] = inFile.nextInt();
index++;

}

int sumOne = 0;
for (int i = 0; i < theCategory.length; i++)
{
sumOne += theCategory[i];
}
double averageOne = sumOne / 59;

int sumTwo = 0;
for (int i = 0; i < thePressure.length; i++)
{
sumTwo += thePressure[i];
}
double averageTwo = sumTwo / 59;

int sumThree = 0;
for (int i = 0; i < theWindspeed.length; i++)
{
sumThree += theWindspeed[i];
}
double averageThree = sumThree / 59;

System.out.println();
System.out.println("                                                      Hurricanes 1980 - 2006");
System.out.println();
System.out.println("Year                   Hurricane                   Category                   Pressure                   Wind Speed" );
System.out.println("********************************************************************************************************************");
System.out.printf("%1d%25s%26d%28d%28d",theYears[0],theNames[0],theCategory[0],thePressure[0],theWindspeed[0]);
System.out.println();
System.out.printf("%1d%26s%25d%28d%28d",theYears[1],theNames[1],theCategory[1],thePressure[1],theWindspeed[1]);
System.out.println();
System.out.printf("%1d%25s%26d%28d%28d",theYears[2],theNames[2],theCategory[2],thePressure[2],theWindspeed[2]);
System.out.println();
System.out.printf("%1d%23s%28d%28d%28d",theYears[3],theNames[3],theCategory[3],thePressure[3],theWindspeed[3]);
System.out.println();
System.out.printf("%1d%25s%26d%28d%28d",theYears[4],theNames[4],theCategory[4],thePressure[4],theWindspeed[4]);
System.out.println();
System.out.printf("%1d%25s%26d%28d%28d",theYears[5],theNames[5],theCategory[5],thePressure[5],theWindspeed[5]);
System.out.println();
System.out.printf("%1d%26s%25d%28d%28d",theYears[6],theNames[6],theCategory[6],thePressure[6],theWindspeed[6]);
System.out.println();
System.out.printf("%1d%24s%27d%28d%28d",theYears[7],theNames[7],theCategory[7],thePressure[7],theWindspeed[7]);
System.out.println();
System.out.printf("%1d%24s%27d%28d%28d",theYears[8],theNames[8],theCategory[8],thePressure[8],theWindspeed[8]);
System.out.println();
System.out.printf("%1d%26s%25d%28d%28d",theYears[9],theNames[9],theCategory[9],thePressure[9],theWindspeed[9]);
System.out.println();
System.out.printf("%1d%27s%24d%28d%28d",theYears[10],theNames[10],theCategory[10],thePressure[10],theWindspeed[10]);
System.out.println();
System.out.printf("%1d%25s%26d%28d%28d",theYears[11],theNames[11],theCategory[11],thePressure[11],theWindspeed[11]);
System.out.println();
System.out.printf("%1d%28s%23d%28d%28d",theYears[12],theNames[12],theCategory[12],thePressure[12],theWindspeed[12]);
System.out.println();
System.out.printf("%1d%27s%24d%28d%28d",theYears[13],theNames[13],theCategory[13],thePressure[13],theWindspeed[13]);
System.out.println();
System.out.printf("%1d%24s%27d%28d%28d",theYears[14],theNames[14],theCategory[14],thePressure[14],theWindspeed[14]);
System.out.println();
System.out.printf("%1d%25s%26d%28d%28d",theYears[15],theNames[15],theCategory[15],thePressure[15],theWindspeed[15]);
System.out.println();
System.out.printf("%1d%23s%28d%28d%28d",theYears[16],theNames[16],theCategory[16],thePressure[16],theWindspeed[16]);
System.out.println();
System.out.printf("%1d%26s%25d%28d%28d",theYears[17],theNames[17],theCategory[17],thePressure[17],theWindspeed[17]);
System.out.println();
System.out.printf("%1d%25s%26d%28d%28d",theYears[18],theNames[18],theCategory[18],thePressure[18],theWindspeed[18]);
System.out.println();
System.out.printf("%1d%24s%27d%28d%28d",theYears[19],theNames[19],theCategory[19],thePressure[19],theWindspeed[19]);
System.out.println();
System.out.printf("%1d%24s%27d%28d%28d",theYears[20],theNames[20],theCategory[20],thePressure[20],theWindspeed[20]);
System.out.println();
System.out.printf("%1d%26s%25d%28d%28d",theYears[21],theNames[21],theCategory[21],thePressure[21],theWindspeed[21]);
System.out.println();
System.out.printf("%1d%24s%27d%28d%28d",theYears[22],theNames[22],theCategory[22],thePressure[22],theWindspeed[22]);
System.out.println();
System.out.printf("%1d%25s%26d%28d%28d",theYears[23],theNames[23],theCategory[23],thePressure[23],theWindspeed[23]);
System.out.println();
System.out.printf("%1d%26s%25d%28d%28d",theYears[24],theNames[24],theCategory[24],thePressure[24],theWindspeed[24]);
System.out.println();
System.out.printf("%1d%24s%27d%28d%28d",theYears[25],theNames[25],theCategory[25],thePressure[25],theWindspeed[25]);
System.out.println();
System.out.printf("%1d%27s%24d%28d%28d",theYears[26],theNames[26],theCategory[26],thePressure[26],theWindspeed[26]);
System.out.println();
System.out.printf("%1d%24s%27d%28d%28d",theYears[27],theNames[27],theCategory[27],thePressure[27],theWindspeed[27]);
System.out.println();
System.out.printf("%1d%25s%26d%28d%28d",theYears[28],theNames[28],theCategory[28],thePressure[28],theWindspeed[28]);
System.out.println();
System.out.printf("%1d%25s%26d%28d%28d",theYears[29],theNames[29],theCategory[29],thePressure[29],theWindspeed[29]);
System.out.println();
System.out.printf("%1d%24s%27d%28d%28d",theYears[30],theNames[30],theCategory[30],thePressure[30],theWindspeed[30]);
System.out.println();
System.out.printf("%1d%29s%22d%28d%28d",theYears[31],theNames[31],theCategory[31],thePressure[31],theWindspeed[31]);
System.out.println();
System.out.printf("%1d%26s%25d%28d%28d",theYears[32],theNames[32],theCategory[32],thePressure[32],theWindspeed[32]);
System.out.println();
System.out.printf("%1d%24s%27d%28d%28d",theYears[33],theNames[33],theCategory[33],thePressure[33],theWindspeed[33]);
System.out.println();
System.out.printf("%1d%27s%24d%28d%28d",theYears[34],theNames[34],theCategory[34],thePressure[34],theWindspeed[34]);
System.out.println();
System.out.printf("%1d%26s%25d%28d%28d",theYears[35],theNames[35],theCategory[35],thePressure[35],theWindspeed[35]);
System.out.println();
System.out.printf("%1d%27s%24d%28d%28d",theYears[36],theNames[36],theCategory[36],thePressure[36],theWindspeed[36]);
System.out.println();
System.out.printf("%1d%24s%27d%28d%28d",theYears[37],theNames[37],theCategory[37],thePressure[37],theWindspeed[37]);
System.out.println();
System.out.printf("%1d%26s%25d%28d%28d",theYears[38],theNames[38],theCategory[38],thePressure[38],theWindspeed[38]);
System.out.println();
System.out.printf("%1d%25s%26d%28d%28d",theYears[39],theNames[39],theCategory[39],thePressure[39],theWindspeed[39]);
System.out.println();
System.out.printf("%1d%26s%25d%28d%28d",theYears[40],theNames[40],theCategory[40],thePressure[40],theWindspeed[40]);
System.out.println();
System.out.printf("%1d%25s%26d%28d%28d",theYears[41],theNames[41],theCategory[41],thePressure[41],theWindspeed[41]);
System.out.println();
System.out.printf("%1d%25s%26d%28d%28d",theYears[42],theNames[42],theCategory[42],thePressure[42],theWindspeed[42]);
System.out.println();
System.out.printf("%1d%27s%24d%28d%28d",theYears[43],theNames[43],theCategory[43],thePressure[43],theWindspeed[43]);
System.out.println();
System.out.printf("%1d%25s%26d%28d%28d",theYears[44],theNames[44],theCategory[44],thePressure[44],theWindspeed[44]);
System.out.println();
System.out.printf("%1d%24s%27d%28d%28d",theYears[45],theNames[45],theCategory[45],thePressure[45],theWindspeed[45]);
System.out.println();
System.out.printf("%1d%27s%24d%28d%28d",theYears[46],theNames[46],theCategory[46],thePressure[46],theWindspeed[46]);
System.out.println();
System.out.printf("%1d%28s%23d%28d%28d",theYears[47],theNames[47],theCategory[47],thePressure[47],theWindspeed[47]);
System.out.println();
System.out.printf("%1d%24s%27d%28d%28d",theYears[48],theNames[48],theCategory[48],thePressure[48],theWindspeed[48]);
System.out.println();
System.out.printf("%1d%24s%27d%28d%28d",theYears[49],theNames[49],theCategory[49],thePressure[49],theWindspeed[49]);
System.out.println();
System.out.printf("%1d%25s%26d%28d%28d",theYears[50],theNames[50],theCategory[50],thePressure[50],theWindspeed[50]);
System.out.println();
System.out.printf("%1d%25s%26d%28d%28d",theYears[51],theNames[51],theCategory[51],thePressure[51],theWindspeed[51]);
System.out.println();
System.out.printf("%1d%24s%27d%28d%28d",theYears[52],theNames[52],theCategory[52],thePressure[52],theWindspeed[52]);
System.out.println();
System.out.printf("%1d%27s%24d%28d%28d",theYears[53],theNames[53],theCategory[53],thePressure[53],theWindspeed[53]);
System.out.println();
System.out.printf("%1d%27s%24d%28d%28d",theYears[54],theNames[54],theCategory[54],thePressure[54],theWindspeed[54]);
System.out.println();
System.out.printf("%1d%28s%23d%28d%28d",theYears[55],theNames[55],theCategory[55],thePressure[55],theWindspeed[55]);
System.out.println();
System.out.printf("%1d%26s%25d%28d%28d",theYears[56],theNames[56],theCategory[56],thePressure[56],theWindspeed[56]);
System.out.println();
System.out.printf("%1d%26s%25d%28d%28d",theYears[57],theNames[57],theCategory[57],thePressure[57],theWindspeed[57]);
System.out.println();
System.out.printf("%1d%25s%26d%28d%28d",theYears[58],theNames[58],theCategory[58],thePressure[58],theWindspeed[58]);
System.out.println();
System.out.println("********************************************************************************************************************");
System.out.printf("Average" + "%48.0f%28.0f%28.0f",averageOne,averageTwo,averageThree);

PrintWriter q = new PrintWriter(
new FileOutputStream("Summary.txt"), true);

q.println("                                                      Hurricanes 1980 - 2006");
q.println();
q.println("Year                   Hurricane                   Category                   Pressure                   Wind Speed" );
q.println("********************************************************************************************************************");
q.printf("%1d%25s%26d%28d%28d",theYears[0],theNames[0],theCategory[0],thePressure[0],theWindspeed[0]);
q.println();
q.printf("%1d%26s%25d%28d%28d",theYears[1],theNames[1],theCategory[1],thePressure[1],theWindspeed[1]);
q.println();
q.printf("%1d%25s%26d%28d%28d",theYears[2],theNames[2],theCategory[2],thePressure[2],theWindspeed[2]);
q.println();
q.printf("%1d%23s%28d%28d%28d",theYears[3],theNames[3],theCategory[3],thePressure[3],theWindspeed[3]);
q.println();
q.printf("%1d%25s%26d%28d%28d",theYears[4],theNames[4],theCategory[4],thePressure[4],theWindspeed[4]);
q.println();
q.printf("%1d%25s%26d%28d%28d",theYears[5],theNames[5],theCategory[5],thePressure[5],theWindspeed[5]);
q.println();
q.printf("%1d%26s%25d%28d%28d",theYears[6],theNames[6],theCategory[6],thePressure[6],theWindspeed[6]);
q.println();
q.printf("%1d%24s%27d%28d%28d",theYears[7],theNames[7],theCategory[7],thePressure[7],theWindspeed[7]);
q.println();
q.printf("%1d%24s%27d%28d%28d",theYears[8],theNames[8],theCategory[8],thePressure[8],theWindspeed[8]);
q.println();
q.printf("%1d%26s%25d%28d%28d",theYears[9],theNames[9],theCategory[9],thePressure[9],theWindspeed[9]);
q.println();
q.printf("%1d%27s%24d%28d%28d",theYears[10],theNames[10],theCategory[10],thePressure[10],theWindspeed[10]);
q.println();
q.printf("%1d%25s%26d%28d%28d",theYears[11],theNames[11],theCategory[11],thePressure[11],theWindspeed[11]);
q.println();
q.printf("%1d%28s%23d%28d%28d",theYears[12],theNames[12],theCategory[12],thePressure[12],theWindspeed[12]);
q.println();
q.printf("%1d%27s%24d%28d%28d",theYears[13],theNames[13],theCategory[13],thePressure[13],theWindspeed[13]);
q.println();
q.printf("%1d%24s%27d%28d%28d",theYears[14],theNames[14],theCategory[14],thePressure[14],theWindspeed[14]);
q.println();
q.printf("%1d%25s%26d%28d%28d",theYears[15],theNames[15],theCategory[15],thePressure[15],theWindspeed[15]);
q.println();
q.printf("%1d%23s%28d%28d%28d",theYears[16],theNames[16],theCategory[16],thePressure[16],theWindspeed[16]);
q.println();
q.printf("%1d%26s%25d%28d%28d",theYears[17],theNames[17],theCategory[17],thePressure[17],theWindspeed[17]);
q.println();
q.printf("%1d%25s%26d%28d%28d",theYears[18],theNames[18],theCategory[18],thePressure[18],theWindspeed[18]);
q.println();
q.printf("%1d%24s%27d%28d%28d",theYears[19],theNames[19],theCategory[19],thePressure[19],theWindspeed[19]);
q.println();
q.printf("%1d%24s%27d%28d%28d",theYears[20],theNames[20],theCategory[20],thePressure[20],theWindspeed[20]);
q.println();
q.printf("%1d%26s%25d%28d%28d",theYears[21],theNames[21],theCategory[21],thePressure[21],theWindspeed[21]);
q.println();
q.printf("%1d%24s%27d%28d%28d",theYears[22],theNames[22],theCategory[22],thePressure[22],theWindspeed[22]);
q.println();
q.printf("%1d%25s%26d%28d%28d",theYears[23],theNames[23],theCategory[23],thePressure[23],theWindspeed[23]);
q.println();
q.printf("%1d%26s%25d%28d%28d",theYears[24],theNames[24],theCategory[24],thePressure[24],theWindspeed[24]);
q.println();
q.printf("%1d%24s%27d%28d%28d",theYears[25],theNames[25],theCategory[25],thePressure[25],theWindspeed[25]);
q.println();
q.printf("%1d%27s%24d%28d%28d",theYears[26],theNames[26],theCategory[26],thePressure[26],theWindspeed[26]);
q.println();
q.printf("%1d%24s%27d%28d%28d",theYears[27],theNames[27],theCategory[27],thePressure[27],theWindspeed[27]);
q.println();
q.printf("%1d%25s%26d%28d%28d",theYears[28],theNames[28],theCategory[28],thePressure[28],theWindspeed[28]);
q.println();
q.printf("%1d%25s%26d%28d%28d",theYears[29],theNames[29],theCategory[29],thePressure[29],theWindspeed[29]);
q.println();
q.printf("%1d%24s%27d%28d%28d",theYears[30],theNames[30],theCategory[30],thePressure[30],theWindspeed[30]);
q.println();
q.printf("%1d%29s%22d%28d%28d",theYears[31],theNames[31],theCategory[31],thePressure[31],theWindspeed[31]);
q.println();
q.printf("%1d%26s%25d%28d%28d",theYears[32],theNames[32],theCategory[32],thePressure[32],theWindspeed[32]);
q.println();
q.printf("%1d%24s%27d%28d%28d",theYears[33],theNames[33],theCategory[33],thePressure[33],theWindspeed[33]);
q.println();
q.printf("%1d%27s%24d%28d%28d",theYears[34],theNames[34],theCategory[34],thePressure[34],theWindspeed[34]);
q.println();
q.printf("%1d%26s%25d%28d%28d",theYears[35],theNames[35],theCategory[35],thePressure[35],theWindspeed[35]);
q.println();
q.printf("%1d%27s%24d%28d%28d",theYears[36],theNames[36],theCategory[36],thePressure[36],theWindspeed[36]);
q.println();
q.printf("%1d%24s%27d%28d%28d",theYears[37],theNames[37],theCategory[37],thePressure[37],theWindspeed[37]);
q.println();
q.printf("%1d%26s%25d%28d%28d",theYears[38],theNames[38],theCategory[38],thePressure[38],theWindspeed[38]);
q.println();
q.printf("%1d%25s%26d%28d%28d",theYears[39],theNames[39],theCategory[39],thePressure[39],theWindspeed[39]);
q.println();
q.printf("%1d%26s%25d%28d%28d",theYears[40],theNames[40],theCategory[40],thePressure[40],theWindspeed[40]);
q.println();
q.printf("%1d%25s%26d%28d%28d",theYears[41],theNames[41],theCategory[41],thePressure[41],theWindspeed[41]);
q.println();
q.printf("%1d%25s%26d%28d%28d",theYears[42],theNames[42],theCategory[42],thePressure[42],theWindspeed[42]);
q.println();
q.printf("%1d%27s%24d%28d%28d",theYears[43],theNames[43],theCategory[43],thePressure[43],theWindspeed[43]);
q.println();
q.printf("%1d%25s%26d%28d%28d",theYears[44],theNames[44],theCategory[44],thePressure[44],theWindspeed[44]);
q.println();
q.printf("%1d%24s%27d%28d%28d",theYears[45],theNames[45],theCategory[45],thePressure[45],theWindspeed[45]);
q.println();
q.printf("%1d%27s%24d%28d%28d",theYears[46],theNames[46],theCategory[46],thePressure[46],theWindspeed[46]);
q.println();
q.printf("%1d%28s%23d%28d%28d",theYears[47],theNames[47],theCategory[47],thePressure[47],theWindspeed[47]);
q.println();
q.printf("%1d%24s%27d%28d%28d",theYears[48],theNames[48],theCategory[48],thePressure[48],theWindspeed[48]);
q.println();
q.printf("%1d%24s%27d%28d%28d",theYears[49],theNames[49],theCategory[49],thePressure[49],theWindspeed[49]);
q.println();
q.printf("%1d%25s%26d%28d%28d",theYears[50],theNames[50],theCategory[50],thePressure[50],theWindspeed[50]);
q.println();
q.printf("%1d%25s%26d%28d%28d",theYears[51],theNames[51],theCategory[51],thePressure[51],theWindspeed[51]);
q.println();
q.printf("%1d%24s%27d%28d%28d",theYears[52],theNames[52],theCategory[52],thePressure[52],theWindspeed[52]);
q.println();
q.printf("%1d%27s%24d%28d%28d",theYears[53],theNames[53],theCategory[53],thePressure[53],theWindspeed[53]);
q.println();
q.printf("%1d%27s%24d%28d%28d",theYears[54],theNames[54],theCategory[54],thePressure[54],theWindspeed[54]);
q.println();
q.printf("%1d%28s%23d%28d%28d",theYears[55],theNames[55],theCategory[55],thePressure[55],theWindspeed[55]);
q.println();
q.printf("%1d%26s%25d%28d%28d",theYears[56],theNames[56],theCategory[56],thePressure[56],theWindspeed[56]);
q.println();
q.printf("%1d%26s%25d%28d%28d",theYears[57],theNames[57],theCategory[57],thePressure[57],theWindspeed[57]);
q.println();
q.printf("%1d%25s%26d%28d%28d",theYears[58],theNames[58],theCategory[58],thePressure[58],theWindspeed[58]);
q.println();
q.println("********************************************************************************************************************");
}
}``````

Well, you definitely need to replace all of those print statements with a loop that prints each line item from the array. There is absolutely no reason to type all of that in manually - it only differs by the array index.

I'd recommend writing a small data class (a struct if you have a c background) to hold the data for each of your entries. i.e.

``````class HurricaneEntry{
int year;
String name;
int category;
float pressure;
float windspeed;
}``````

For your frequency count on the categories, a HashMap is useful.

Your code is an ideal candidate for:

1) A class: You have a whole bunch of attributes which you are storing in separate arrays. Make a class and make a single array of that class.

2) A loop: You have a bunch of print statements where you display information, about 60 or so, but they are displaying elements of the arrays. Shorten the code considerably by putting it in a loop.

3) Removal of code from main - Everything is in the main function. Create a class or class or classes and put the code in there. Your main function shouldn't have all of that in there. You have a Hurricanes2 class, but you don't do anything with it. You just have a big main function in it. Treat it as a class, create some class variables, etc.

Anything that can be categorized can be counted, it seems to me. You have a category variable called theCategory. It's hard to give much advice till the code is redesigned, but I'd have a Hurricane class with "category" as a data member of the class. You could have sub-classes of that, one for each type of Hurricane, but that may not be necessary. Set up some type of counter variable and when you create a new Hurricane object, increment the counter for that particular Hurricane category. Or have a Collection for each Hurricane category, like a Vector, which will do the counting for you. But I think a major redesign of the program is needed regardless of the counting, and that redesign should make it easy to count.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.