Java Programming

Design a Java application that will read a file containing data related to the US. Crime statistics from 1994-2013.

Here are the codes I have so far:

public class USCrimeClass {

// Crime data fields for each data to retrieve

private int year;

private double populationGrowth;

private int maxMurderYear;

private int minMurderYear;

private int maxRobberyYear;

private int minRobberyYear;

/**

* Crime data constructor to set variables

*/

public USCrimeClass(int year, int populationGrowth, int maxMurderYear, int minMurderYear, int maxRobberyYear, int minRobberyYear){

this.year = year;

this.populationGrowth = populationGrowth;

this.maxMurderYear = maxMurderYear;

this.minMurderYear = minMurderYear;

this.maxRobberyYear = maxRobberyYear;

this.minRobberyYear = minRobberyYear;

}

// Constructor defaults

public USCrimeClass(int count){

this.year = 0;

this.populationGrowth = 0.0;

this.maxMurderYear = 0;

this.minMurderYear = 0;

this.maxRobberyYear = 0;

this.minRobberyYear = 0;

}

/**

* Getter methods for each field

* @return percentage growth and years for murder and robbery

*/

public int getYear() {return this.year; }

public double getPopulationGrowth() {return this.populationGrowth; }

public int getMaxMurderYear() {return this.maxMurderYear; }

public int getMinMurderYear() {return this.minMurderYear; }

public int getMaxRobberyYear() {return this.maxRobberyYear; }

public int getMinRobberyYear() {return this.minRobberyYear; }

// Setter method for each field

public void setYear(int year) {this.year = year;}

public void setPopulationGrowth(double populationGrowth) {this.populationGrowth = populationGrowth;}

public void setMaxMurderYear(int maxMurders) {this.maxMurderYear = maxMurders;}

public void setMinMurderYear(int minMurders) {this.minMurderYear = minMurders;}

public void setMaxRobberyYear(int maxRobbery) {this.maxRobberyYear = maxRobbery;}

public void setMinRobberyYear(int minRobbery) {this.minRobberyYear = minRobbery;}

}

import java.io.File;

import java.util.Scanner;

import java.io.FileNotFoundException;

public class USCrimeFile {

public static USCrimeClass[] read(String filename){

// Array declaration

USCrimeClass[] stats = new USCrimeClass[20];

Scanner inputReader = null;

// Variable declaration

int count = 0;

String line;

// Access Crime.csv and create array

try {

File file=new File(“Crime.csv”);

inputReader = new Scanner(new File(“Crime.csv”));

// Read first line

inputReader.nextLine();

while (inputReader.hasNext()) {

line = inputReader.nextLine();

String[] data = line.split(“,”);

stats[count] = new USCrimeClass(Integer.parseInt(data[0]));

stats[count].setPopulationGrowth(Integer.parseInt(data[1]));

stats[count].setMaxMurderYear(Integer.parseInt(data[4]));

stats[count].setMinMurderYear(Integer.parseInt(data[4]));

stats[count].setMaxRobberyYear(Integer.parseInt(data[8]));

stats[count].setMinRobberyYear(Integer.parseInt(data[8]));

count++;

}

return stats;

} catch (FileNotFoundException e) {

e.printStackTrace();

return stats;

}

finally {

inputReader.close();

}

}

// Method calculation for population growth rate

public void populationGrowth(USCrimeClass[] data){

double growthRate;

System.out.println(“Population growth rate: “);

for (int i = 0; i < data.length - 1; i++){

growthRate = 100 * (float) (data[i+1].getPopulationGrowth() – data[i].getPopulationGrowth()) / data[i].getPopulationGrowth();

System.out.println(“From ” + data[i].getYear() + ” to ” + data[i + 1].getYear() + ” the population growth was “+ String.format(“%.4f”, growthRate) + “%”);

}

}

// Method to find year with highest murder rate

public String maxMurderYear(USCrimeClass[] data) {

int iSize = data.length;

double currentMurderRate = 0.00;

double mMurderRate;

int murderHighYear = 0;

String stReturnValue;

// Access array

try {

for (int i = 0; i < iSize; i++) {

// Get murder rate

mMurderRate = data[i].getMaxMurderYear();

if (mMurderRate < currentMurderRate) {

murderHighYear = data[i].getYear();

}

currentMurderRate = mMurderRate;

}

stReturnValue = “The murder rate was highest in ” + murderHighYear + “.”;

return stReturnValue;

}

catch(Exception e){

System.out.println(“Exception” + e.getMessage());

return null;

}

}

// Method to find lowest murder year

public String minMurderYear(USCrimeClass[] data) {

int iSize = data.length;

double currentMurderRate = 0.00;

double mMurderRate;

int murderLowYear = 0;

String stReturnValue;

try {

// Access array

for (int i = 0; i < iSize; i++) {

// Get the murder rate

mMurderRate = data[i].getMinMurderYear();

if (mMurderRate > currentMurderRate) {

murderLowYear = data[i].getYear();

}

currentMurderRate = mMurderRate;

}

stReturnValue = “The murder rate was lowest in ” + murderLowYear + “.”;

return stReturnValue;

} catch (Exception e) {

System.out.println(“Exception” + e.getMessage());

return null;

}

}

// Get the year with highest robberies

public String maxRobberyYear(USCrimeClass[] data) {

int iSize = data.length;

double currentRobberyRate = 0.00;

double dRobberyRate;

int robberyHighYear = 0;

String stReturnValue;

// Access array

try {

for (int i = 0; i < iSize; i++) {

// Get the robbery rate

dRobberyRate = data[i].getMaxRobberyYear();

if (dRobberyRate < currentRobberyRate) {

robberyHighYear = data[i].getYear();

}

currentRobberyRate = dRobberyRate;

}

stReturnValue = “The robbery rate was highest in ” + robberyHighYear + “.”;

return stReturnValue;

} catch (Exception e) {

System.out.println(“Exception” + e.getMessage());

return null;

}

}

// Method to find lowest robbery year

public String minRobberyYear(USCrimeClass[] data) {

int iSize = data.length;

double currentRobberyRate = 0.00;

double dRobberyRate;

int robberyLowYear = 0;

String stReturnValue;

// Access array

try {

for (int i = 0; i < iSize; i++) {

// Get robbery rate

dRobberyRate = data[i].getMinRobberyYear();

if (dRobberyRate > currentRobberyRate) {

robberyLowYear = data[i].getYear();

}

currentRobberyRate = dRobberyRate;

}

stReturnValue = “The robbery rate was lowest in ” + robberyLowYear + “.”;

return stReturnValue;

} catch (Exception e) {

System.out.println(“Exception” + e.getMessage());

return null;

}

}

}

import java.util.Scanner;

public class TestUSCrime {

static Scanner input = new Scanner(System.in);

public static void main(String[] args) {

/**

* Reference USCrimeFile

*/

USCrimeFile oUSCrimeFile = new USCrimeFile();

USCrimeClass[] data = USCrimeFile.read(“Crime.csv”);

/**

* Declare variables

*/

long startTime = System.currentTimeMillis();

long endTime;

String userSelect;

while (true)

{

// Welcome prompt

System.out.println(“n******** Welcome to the US Crime Statistical Application********n”);

System.out.println(“n” + “Enter the number of the question you want answered. Enter ‘Q’ to quit the program:n”);

System.out.println(“1. What were the percentages in population growth for each consecutive year from 1994-2013?”);

System.out.println(“2. What year was the murder rate the highest?”);

System.out.println(“3. What year wat the murder rate the lowest?”);

System.out.println(“4. What year was the robbery rate the highest?”);

System.out.println(“5. What year was the robbery rate the lowest?”);

System.out.println(“Q. Quit the program”);

System.out.println(“nEnter your selection: “);

userSelect = input.nextLine();

System.out.println();

switch (userSelect){

case “1”:

oUSCrimeFile.populationGrowth(data);

break;

case “2”:

System.out.println(“The murder rate was highest in ” + oUSCrimeFile.maxMurderYear(data));

break;

case “3”:

System.out.println(“The murder rate was lowest in ” + oUSCrimeFile.minMurderYear(data));

break;

case “4”:

System.out.println(“The robbery rate was highest in: ” + oUSCrimeFile.maxRobberyYear(data));

break;

case “5”:

System.out.println(“The robbery rate was highest in: ” + oUSCrimeFile.minRobberyYear(data));

break;

case “Q”:

System.out.println(“nThank you for trying the US Crime Statistics Program”);

endTime = System.currentTimeMillis();

System.out.println(“nElapsed time in seconds was: ” + (endTime – startTime) / 1000 + “seconds.”);

System.exit(0);

}

}

}

}

Tags: No tags