Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

How would I make CampusClassAnalysis.java an immutable class and make the main.j

ID: 3717330 • Letter: H

Question

How would I make CampusClassAnalysis.java an immutable class and make the main.java correspond.

CampusClassAnalysis.java

public class CampusCrimeAnalysis {

private int year;

private String state;

private int campusType;

private int maleStudentCount;

private int femaleStudentCount;

private int murderCount;

private int negligentHomicidesCount;

private int rapeCount;

private int aggravatedAssaultsCount;

/**

*

* @return the year

*

*/

public int getYear() {

return year;

}

/**

*

* @param year

* the year to set

*

*/

public void setYear(int year) {

this.year = year;

}

/**

*

* @return the state

*

*/

public String getState() {

return state;

}

/**

*

* @param state

* the state to set

*

*/

public void setState(String state) {

this.state = state;

}

/**

*

* @return the campusType

*

*/

public int getCampusType() {

return campusType;

}

/**

*

* @param campusType

* the campusType to set

*

*/

public void setCampusType(int campusType) {

this.campusType = campusType;

}

/**

*

* @return the maleStudentCount

*

*/

public int getMaleStudentCount() {

return maleStudentCount;

}

/**

*

* @param maleStudentCount

* the maleStudentCount to set

*

*/

public void setMaleStudentCount(int maleStudentCount) {

this.maleStudentCount = maleStudentCount;

}

/**

*

* @return the femaleStudentCount

*

*/

public int getFemaleStudentCount() {

return femaleStudentCount;

}

/**

*

* @param femaleStudentCount

* the femaleStudentCount to set

*

*/

public void setFemaleStudentCount(int femaleStudentCount) {

this.femaleStudentCount = femaleStudentCount;

}

/**

*

* @return the murderCount

*

*/

public int getMurderCount() {

return murderCount;

}

/**

*

* @param murderCount

* the murderCount to set

*

*/

public void setMurderCount(int murderCount) {

this.murderCount = murderCount;

}

/**

*

* @return the negligentHomicidesCount

*

*/

public int getNegligentHomicidesCount() {

return negligentHomicidesCount;

}

/**

*

* @param negligentHomicidesCount

* the negligentHomicidesCount to set

*

*/

public void setNegligentHomicidesCount(int negligentHomicidesCount) {

this.negligentHomicidesCount = negligentHomicidesCount;

}

/**

*

* @return the rapeCount

*

*/

public int getRapeCount() {

return rapeCount;

}

/**

*

* @param rapeCount

* the rapeCount to set

*

*/

public void setRapeCount(int rapeCount) {

this.rapeCount = rapeCount;

}

/**

*

* @return the aggravatedAssaultsCount

*

*/

public int getAggravatedAssaultsCount() {

return aggravatedAssaultsCount;

}

/**

*

* @param aggravatedAssaultsCount

* the aggravatedAssaultsCount to set

*

*/

public void setAggravatedAssaultsCount(int aggravatedAssaultsCount) {

this.aggravatedAssaultsCount = aggravatedAssaultsCount;

}

}

Main.java

public class Main {

private static String inputFileName = "oncampuscrime.txt";

private static String crimeTypeList = "Murder,NegHom,Rape,AgAslt,All";

private static String yearList = "2014,2015,2016,All";

private static String campusTypeList = "0-All,1-Pub4yr,2-PriNoProf,3-PriProf4yr,4-Pub2yr,"

+ "5-PriNoProf2yr,6-PriProf2yr,7-Pub<2yr,8-PriNoProf<2yr,9-PriProf<2yr";

private static String stateAbbr = "AL,AK,AZ,AR,CA,CO,CT,DE,FL,GA,HI,ID,IL,IN,IA,KS,KY,LA,ME,MD,MA,MI,MN,MS,MO,MT,NE,NV,NH,NJ,NM,NY,NC,ND,OH,OK,OR,PA,RI,SC,SD,TN,TX,UT,VT,VA,WA,WV,WI,WY";

public static void main(String[] args) throws IOException {

Scanner scanner = new Scanner(new File(inputFileName));

ArrayList<CampusCrimeAnalysis> campusCrimeAnalysisList = new ArrayList<>();

// reading data from file and creating a list of object storing each

// record in the file

while (scanner.hasNext()) {

String[] inputLineList = scanner.nextLine().split(" ");

if (inputLineList.length != 9) {

continue;

}

CampusCrimeAnalysis campusCrimeAnalysis = new CampusCrimeAnalysis();

campusCrimeAnalysis.setYear(Integer.parseInt(inputLineList[0]));

campusCrimeAnalysis.setState(inputLineList[1]);

campusCrimeAnalysis.setCampusType(Integer.parseInt(inputLineList[2]));

campusCrimeAnalysis.setMaleStudentCount(Integer.parseInt(inputLineList[3]));

campusCrimeAnalysis.setFemaleStudentCount(Integer.parseInt(inputLineList[4]));

campusCrimeAnalysis.setMurderCount(Integer.parseInt(inputLineList[5]));

campusCrimeAnalysis.setNegligentHomicidesCount(Integer.parseInt(inputLineList[6]));

campusCrimeAnalysis.setRapeCount(Integer.parseInt(inputLineList[7]));

campusCrimeAnalysis.setAggravatedAssaultsCount(Integer.parseInt(inputLineList[8]));

campusCrimeAnalysisList.add(campusCrimeAnalysis);

}

scanner.close();

String[] inputList = getInputList();

int totalStudentCount = -1;// indicate total needed

if (inputList[0].trim().toLowerCase().equals("percent")) {

totalStudentCount = 0; // to indicate percent needed

}

int year = inputList[2].trim().toLowerCase().equals("all") ? 0 : Integer.parseInt(inputList[2].trim());// year=0

// represents

// all

int campusType = Integer.parseInt(inputList[3]);// 0-represents all

String state = inputList[4].trim().toLowerCase().equals("all") ? "" : inputList[4].trim();// ""

// represents

// all

// states

int totalCrime = 0;

String crimeType = inputList[1].trim().toLowerCase();

int maleStudentCount = 0;

int femaleStudentCount = 0;

// iterate over the file contents and calculate counts based on user

// inputs

for (int i = 0; i < campusCrimeAnalysisList.size(); i++) {

CampusCrimeAnalysis object = campusCrimeAnalysisList.get(i);

// condition for all or specific year & all or specific campus &&

// all or specific state ignoring -1 values

if ((year == 0 || year == object.getYear()) && (campusType == 0 || campusType == object.getCampusType())

&& (state.equals("") || state.equalsIgnoreCase(object.getState()))) {

if (totalStudentCount == 0) {

totalStudentCount += object.getMaleStudentCount() + object.getFemaleStudentCount();

}

maleStudentCount += object.getMaleStudentCount();

femaleStudentCount += object.getFemaleStudentCount();

switch (crimeType) {

case "murder": // murder count

totalCrime += (object.getMurderCount() != -1 ? object.getMurderCount() : 0);

break;

case "neghom":// negligent homicides count

totalCrime += (object.getNegligentHomicidesCount() != -1 ? object.getNegligentHomicidesCount() : 0);

break;

case "rape":// rape count

totalCrime += (object.getRapeCount() != -1 ? object.getRapeCount() : 0);

break;

case "agaslt":// aggrevated assualts count

totalCrime += (object.getAggravatedAssaultsCount() != -1 ? object.getAggravatedAssaultsCount() : 0);

break;

default: // all counts

totalCrime += (object.getMurderCount() != -1 ? object.getMurderCount() : 0);

totalCrime += (object.getNegligentHomicidesCount() != -1 ? object.getNegligentHomicidesCount() : 0);

totalCrime += (object.getRapeCount() != -1 ? object.getRapeCount() : 0);

totalCrime += (object.getAggravatedAssaultsCount() != -1 ? object.getAggravatedAssaultsCount() : 0);

break;

}

}

}

// display results

System.out.println("Male students count:" + maleStudentCount);

System.out.println("Female students count:" + femaleStudentCount);

if (totalStudentCount == -1) {// total count required scenario

System.out.println("Total crime = " + totalCrime + (totalCrime == 0 ? "/No data available" : ""));

} else {

System.out.println((totalCrime == 0 ? "Crime count = 0 or no data avalialbe"

: "1 crime per " + Math.round((double) totalStudentCount / totalCrime) + " students"));

}

}

private static String[] getInputList() {

String[] inputList = new String[5];

Scanner scanner = new Scanner(System.in);

System.out.println("Enter Total or Percent:");

inputList[0] = scanner.nextLine();

System.out.println("Enter crime type (" + crimeTypeList + ")");

inputList[1] = scanner.nextLine();

if (crimeTypeList.indexOf(inputList[1]) == -1) {

inputList[1] = "All";

}

System.out.println("Enter year (" + yearList + "):");

inputList[2] = scanner.nextLine();

if (yearList.indexOf(inputList[2]) == -1) {

inputList[2] = "All";

}

System.out.println(campusTypeList + " " + "Enter campus type Nummber:");

inputList[3] = scanner.nextLine();

try {

if (Integer.parseInt(inputList[3]) < 0 || Integer.parseInt(inputList[3]) > 9) {

inputList[3] = "0";

}

} catch (Exception e) {// occurs when non-numeric values entered.

inputList[3] = "0";

}

// printing state abbreviations 10/line

String[] stateAbbrList = stateAbbr.split(",");

for (int i = 0; i < stateAbbrList.length; i++) {

System.out.print(stateAbbrList[i]);

if ((i + 1) % 10 == 0 && i < stateAbbrList.length) {

System.out.println("");

} else {

System.out.print(" ");

}

}

inputList[4] = scanner.nextLine();

if (stateAbbr.indexOf(inputList[4]) == -1) {

inputList[4] = "All";

}

scanner.close();

return inputList;

}

}

Explanation / Answer

Below is your immutable class and Main class

CampusCrimeAnalysis.java

public final class CampusCrimeAnalysis {

private final int year;

private final String state;

private final int campusType;

private final int maleStudentCount;

private final int femaleStudentCount;

private final int murderCount;

private final int negligentHomicidesCount;

private final int rapeCount;

private final int aggravatedAssaultsCount;

public CampusCrimeAnalysis(int year, String state, int campusType, int maleStudentCount, int femaleStudentCount,

int murderCount, int negligentHomicidesCount, int rapeCount, int aggravatedAssaultsCount) {

this.year = year;

this.state = state;

this.campusType = campusType;

this.maleStudentCount = maleStudentCount;

this.femaleStudentCount = femaleStudentCount;

this.murderCount = murderCount;

this.negligentHomicidesCount = negligentHomicidesCount;

this.rapeCount = rapeCount;

this.aggravatedAssaultsCount = aggravatedAssaultsCount;

}

/**

*

*

*

* @return the year

*

*

*

*/

public int getYear() {

return year;

}

/**

*

*

*

* @return the state

*

*

*

*/

public String getState() {

return state;

}

/**

*

*

*

* @return the campusType

*

*

*

*/

public int getCampusType() {

return campusType;

}

/**

*

*

*

* @return the maleStudentCount

*

*

*

*/

public int getMaleStudentCount() {

return maleStudentCount;

}

/**

*

*

*

* @return the femaleStudentCount

*

*

*

*/

public int getFemaleStudentCount() {

return femaleStudentCount;

}

/**

*

*

*

* @return the murderCount

*

*

*

*/

public int getMurderCount() {

return murderCount;

}

/**

*

*

*

* @return the negligentHomicidesCount

*

*

*

*/

public int getNegligentHomicidesCount() {

return negligentHomicidesCount;

}

/**

*

*

*

* @return the rapeCount

*

*

*

*/

public int getRapeCount() {

return rapeCount;

}

/**

*

*

*

* @return the aggravatedAssaultsCount

*

*

*

*/

public int getAggravatedAssaultsCount() {

return aggravatedAssaultsCount;

}

}

Main.java

public class Main {

private static String inputFileName = "oncampuscrime.txt";

private static String crimeTypeList = "Murder,NegHom,Rape,AgAslt,All";

private static String yearList = "2014,2015,2016,All";

private static String campusTypeList = "0-All,1-Pub4yr,2-PriNoProf,3-PriProf4yr,4-Pub2yr,"

+ "5-PriNoProf2yr,6-PriProf2yr,7-Pub<2yr,8-PriNoProf<2yr,9-PriProf<2yr";

private static String stateAbbr = "AL,AK,AZ,AR,CA,CO,CT,DE,FL,GA,HI,ID,IL,IN,IA,KS,KY,LA,ME,MD,MA,MI,MN,MS,MO,MT,NE,NV,NH,NJ,NM,NY,NC,ND,OH,OK,OR,PA,RI,SC,SD,TN,TX,UT,VT,VA,WA,WV,WI,WY";

public static void main(String[] args) throws IOException {

Scanner scanner = new Scanner(new File(inputFileName));

ArrayList<CampusCrimeAnalysis> campusCrimeAnalysisList = new ArrayList<>();

// reading data from file and creating a list of object storing each

// record in the file

while (scanner.hasNext()) {

String[] inputLineList = scanner.nextLine().split(" ");

if (inputLineList.length != 9) {

continue;

}

CampusCrimeAnalysis campusCrimeAnalysis = new CampusCrimeAnalysis(Integer.parseInt(inputLineList[0]),

inputLineList[1], Integer.parseInt(inputLineList[2]), Integer.parseInt(inputLineList[3]),

Integer.parseInt(inputLineList[4]), Integer.parseInt(inputLineList[5]),

Integer.parseInt(inputLineList[6]), Integer.parseInt(inputLineList[7]),

Integer.parseInt(inputLineList[8]));

campusCrimeAnalysisList.add(campusCrimeAnalysis);

}

scanner.close();

String[] inputList = getInputList();

int totalStudentCount = -1;// indicate total needed

if (inputList[0].trim().toLowerCase().equals("percent")) {

totalStudentCount = 0; // to indicate percent needed

}

int year = inputList[2].trim().toLowerCase().equals("all") ? 0 : Integer.parseInt(inputList[2].trim());// year=0

// represents

// all

int campusType = Integer.parseInt(inputList[3]);// 0-represents all

String state = inputList[4].trim().toLowerCase().equals("all") ? "" : inputList[4].trim();// ""

// represents

// all

// states

int totalCrime = 0;

String crimeType = inputList[1].trim().toLowerCase();

int maleStudentCount = 0;

int femaleStudentCount = 0;

// iterate over the file contents and calculate counts based on user

// inputs

for (int i = 0; i < campusCrimeAnalysisList.size(); i++) {

CampusCrimeAnalysis object = campusCrimeAnalysisList.get(i);

// condition for all or specific year & all or specific campus &&

// all or specific state ignoring -1 values

if ((year == 0 || year == object.getYear()) && (campusType == 0 || campusType == object.getCampusType())

&& (state.equals("") || state.equalsIgnoreCase(object.getState()))) {

if (totalStudentCount == 0) {

totalStudentCount += object.getMaleStudentCount() + object.getFemaleStudentCount();

}

maleStudentCount += object.getMaleStudentCount();

femaleStudentCount += object.getFemaleStudentCount();

switch (crimeType) {

case "murder": // murder count

totalCrime += (object.getMurderCount() != -1 ? object.getMurderCount() : 0);

break;

case "neghom":// negligent homicides count

totalCrime += (object.getNegligentHomicidesCount() != -1 ? object.getNegligentHomicidesCount() : 0);

break;

case "rape":// rape count

totalCrime += (object.getRapeCount() != -1 ? object.getRapeCount() : 0);

break;

case "agaslt":// aggrevated assualts count

totalCrime += (object.getAggravatedAssaultsCount() != -1 ? object.getAggravatedAssaultsCount() : 0);

break;

default: // all counts

totalCrime += (object.getMurderCount() != -1 ? object.getMurderCount() : 0);

totalCrime += (object.getNegligentHomicidesCount() != -1 ? object.getNegligentHomicidesCount() : 0);

totalCrime += (object.getRapeCount() != -1 ? object.getRapeCount() : 0);

totalCrime += (object.getAggravatedAssaultsCount() != -1 ? object.getAggravatedAssaultsCount() : 0);

break;

}

}

}

// display results

System.out.println("Male students count:" + maleStudentCount);

System.out.println("Female students count:" + femaleStudentCount);

if (totalStudentCount == -1) {// total count required scenario

System.out.println("Total crime = " + totalCrime + (totalCrime == 0 ? "/No data available" : ""));

} else {

System.out.println((totalCrime == 0 ? "Crime count = 0 or no data avalialbe"

: "1 crime per " + Math.round((double) totalStudentCount / totalCrime) + " students"));

}

}

private static String[] getInputList() {

String[] inputList = new String[5];

Scanner scanner = new Scanner(System.in);

System.out.println("Enter Total or Percent:");

inputList[0] = scanner.nextLine();

System.out.println("Enter crime type (" + crimeTypeList + ")");

inputList[1] = scanner.nextLine();

if (crimeTypeList.indexOf(inputList[1]) == -1) {

inputList[1] = "All";

}

System.out.println("Enter year (" + yearList + "):");

inputList[2] = scanner.nextLine();

if (yearList.indexOf(inputList[2]) == -1) {

inputList[2] = "All";

}

System.out.println(campusTypeList + " " + "Enter campus type Nummber:");

inputList[3] = scanner.nextLine();

try {

if (Integer.parseInt(inputList[3]) < 0 || Integer.parseInt(inputList[3]) > 9) {

inputList[3] = "0";

}

} catch (Exception e) {// occurs when non-numeric values entered.

inputList[3] = "0";

}

// printing state abbreviations 10/line

String[] stateAbbrList = stateAbbr.split(",");

for (int i = 0; i < stateAbbrList.length; i++) {

System.out.print(stateAbbrList[i]);

if ((i + 1) % 10 == 0 && i < stateAbbrList.length) {

System.out.println("");

} else {

System.out.print(" ");

}

}

inputList[4] = scanner.nextLine();

if (stateAbbr.indexOf(inputList[4]) == -1) {

inputList[4] = "All";

}

scanner.close();

return inputList;

}

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote