Question: I keep getting error message when I try to run TestUSCrime,java. The message says TestUSCrime.java:1: error: illegal character: 'u00bb' (the next thing is a weird
I keep getting error message when I try to run TestUSCrime,java. The message says TestUSCrime.java:1: error: illegal character: '\u00bb' (the next thing is a weird squigly shape), the second error is exactly the same except it has '\u00bf' followed by the same weird squiggle.
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class TestUSCrime { static Scanner input = new Scanner(System.in);
public static void main(String[] args) { long startTime = System.currentTimeMillis(); long endTime = 0; System.out.println("*** Welcome to the US Crime Statistical Application ***"); if (args.length != 1) { System.out.println("Usage: \"java UserCrimeStatsApp Crime.csv"); return; }
USCrimeClass[] crimeData = readFile(args[0]);
String choice; while (true) {
String menu = " Enter the number of the question you want answered. Enter Q to quit the program : "
+ "1. What were the percentages in population growth for each consecutive year from 1994 2013? "
+ "2. What year was the Murder rate the highest? "
+ "3. What year was the Murder rate the lowest? "
+ "4. What year was the Robbery rate the highest? "
+ "5. What year was the Robbery rate the lowest? " + "Q. Quit the program";
System.out.println(menu);
choice = chooseOption();
System.out.println();
switch (choice) { case "1":
getPercentage(crimeData);
break;
case "2":
System.out.println("The Murder rate was highest in " + popMurderRate(crimeData));
break;
case "3":
System.out.println("The Murder rate was lowest in " + lowestMurderRate(crimeData));
break;
case "4":
System.out.println("The Robbery rate was highest in " + getHighRR(crimeData));
break;
case "5":
System.out.println("The Robbery rate was lowest in " + getLwRR(crimeData));
break; case "Q":
System.out.println("Thank you for trying the US Crimes Statistics Program.");
endTime = System.currentTimeMillis();
System.out.println("Elapsed time in seconds was: " + (endTime - startTime) / 1000);
return;
default:
System.out.println("Error: Invalid choice selected!! Try again. ");
break;
}
}
}
/*** * * @param filename
* @return
*/ public static USCrimeClass[] readFile(String filename) {
USCrimeClass[] data = new USCrimeClass[20];
int noLine = 0;
String singleLine;
try {
try ( // readFile file Scanner console = new Scanner(new File(filename))) { console.nextLine(); while (console.hasNext()) { singleLine = console.nextLine(); String[] crimeData = singleLine.split(","); data[noLine] = new USCrimeClass(Integer.parseInt(crimeData[0])); data[noLine].setRobberyRate(Float.parseFloat(crimeData[9])); data[noLine].setPopulation(Integer.parseInt(crimeData[1])); data[noLine].setMurderRate(Float.parseFloat(crimeData[5])); noLine++; } }
} catch (FileNotFoundException e) {
System.out.println(e);
}
return data;
}
public static String chooseOption() {
String choice;
System.out.print(" Enter your selection: ");
choice = input.next();
return choice; }
/*** * * @param crimeData
* @return
*/ public static int popMurderRate(USCrimeClass[] crimeData) {
int year = 0;
float maxRate = 0;
for (USCrimeClass crime : crimeData) {
if (crime.getMurderRate() > maxRate) {
maxRate = crime.getMurderRate();
year = crime.getYear();
}
}
return year;
}
/***
* * @param crimeData
* @return
*/
public static int lowestMurderRate(USCrimeClass[] crimeData) {
int year = 0;
float minMurderrate = crimeData[0].getMurderRate();
for (USCrimeClass crime : crimeData) {
if (crime.getMurderRate() < minMurderrate) {
minMurderrate = crime.getMurderRate();
year = crime.getYear();
}
}
return year;
}
/***
* * @param crimeData
* @return
*/
public static int getHighRR(USCrimeClass[] crimeData) {
int year = 0;
float maxRate = 0;
for (USCrimeClass crime : crimeData) {
if (crime.getRobberyRate() > maxRate) {
maxRate = crime.getRobberyRate();
year = crime.getYear();
}
}
return year;
}
/****
* * @param crimeData
* @return
*/
public static int getLwRR(USCrimeClass[] crimeData) {
int year = 0;
float minMurderrate = crimeData[0].getRobberyRate();
for (USCrimeClass crime : crimeData) {
if (crime.getRobberyRate() < minMurderrate) {
minMurderrate = crime.getRobberyRate();
year = crime.getYear();
}
}
return year;
}
/***
* * @param crimeData
*/
public static void getPercentage(USCrimeClass[] crimeData) {
float growth;
for (int i = 0; i < crimeData.length - 1; i++) {
growth = 100 * (float) (crimeData[i + 1].getPopulation() - crimeData[i].getPopulation())
/ crimeData[i].getPopulation();
System.out.println("[" + crimeData[i].getYear() + "-" + crimeData[i + 1].getYear() + "]: "
+ String.format("%.4f", growth) + "%");
}
}
}
This code seems to run fine.
public class USCrimeClass {
private float murderRate;
private float robberyRate;
private int populationGrowth;
private int year;
/**
* * @param year
*/
public USCrimeClass(int year) {
this.year = year;
}
public float getMurderRate() {
return murderRate;
}
public void setMurderRate(float murderRate) {
this.murderRate = murderRate;
}
public float getRobberyRate() {
return robberyRate;
}
/***
* * @param robberyRate
*/
public void setRobberyRate(float robberyRate) {
this.robberyRate = robberyRate;
}
public int getPopulation() {
return populationGrowth;
}
public void setPopulation(int populationGrowth) {
this.populationGrowth = populationGrowth;
}
public int getYear() {
return year;
}
}
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
