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);
}
}
}
}
6 years ago 20
- econ HW
- Resarch proposal
- Discussion question Views on Intelligence (300 words)
- In week 8 you are going to submit 2 components; a PowerPoint presentation and an Excel spreadsheet with your calculations. There will be no traditional report in Word, as the intent of this exercise is to demonstrate your ability to calculate and present
- PF 406203
- Testing and Quality
- "Technological Advancements and Challenges"
- Database File Setup/ Access 2007
- perfecto - Key Elements of a Supply Chain
- I need a short page with 200 words and 2 references