sigh
Answer:
```java
import java.util.Scanner;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
public class StatePair<Type1, Type2> {
private Type1 value1;
private Type2 value2;
public StatePair(Type1 value1, Type2 value2) {
this.value1 = value1;
this.value2 = value2;
}
public Type1 getValue1() {
return value1;
}
public void setValue1(Type1 value1) {
this.value1 = value1;
}
public Type2 getValue2() {
return value2;
}
public void setValue2(Type2 value2) {
this.value2 = value2;
}
public void printInfo() {
System.out.println(value1 + ": " + value2);
}
}
public class StatePopulations {
public static ArrayList<StatePair<Integer, String>> fillArray1(ArrayList<StatePair<Integer, String>> statePairs, Scanner inFS) {
StatePair<Integer, String> pair;
int intValue;
String stringValue;
while (inFS.hasNextLine()) {
intValue = inFS.nextInt();
stringValue = inFS.next();
pair = new StatePair<>(intValue, stringValue);
statePairs.add(pair);
}
return statePairs;
}
public static ArrayList<StatePair<String, String>> fillArray2(ArrayList<StatePair<String, String>> statePairs, Scanner inFS) {
StatePair<String, String> pair;
String stringValue1;
String stringValue2;
while (inFS.hasNextLine()) {
stringValue1 = inFS.next();
inFS.nextLine();
stringValue2 = inFS.nextLine();
pair = new StatePair<>(stringValue1, stringValue2);
statePairs.add(pair);
}
return statePairs;
}
public static ArrayList<StatePair<String, Integer>> fillArray3(ArrayList<StatePair<String, Integer>> statePairs, Scanner inFS) {
StatePair<String, Integer> pair;
String stringValue;
int intValue;
while (inFS.hasNextLine()) {
stringValue = inFS.nextLine();
intValue = inFS.nextInt();
inFS.nextLine();
pair = new StatePair<>(stringValue, intValue);
statePairs.add(pair);
}
return statePairs;
}
public static void main(String[] args) throws IOException {
Scanner scnr = new Scanner(System.in);
FileInputStream fileByteStream = null; // File input stream
Scanner inFS = null; // Scanner object
int myZipCode;
int i;
// ZIP code - state abbrev. pairs
ArrayList<StatePair<Integer, String>> zipCodeState = new ArrayList<>();
// state abbrev. - state name pairs
ArrayList<StatePair<String, String>> abbrevState = new ArrayList<>();
// state name - population pairs
ArrayList<StatePair<String, Integer>> statePopulation = new ArrayList<>();
// Fill the three ArrayLists
// Try to open zip_code_state.txt file
fileByteStream = new FileInputStream("zip_code_state.txt");
inFS = new Scanner(fileByteStream);
zipCodeState = fillArray1(zipCodeState, inFS);
fileByteStream.close(); // close() may throw IOException if fails
// Try to open abbreviation_state.txt file
fileByteStream = new FileInputStream("abbreviation_state.txt");
inFS = new Scanner(fileByteStream);
abbrevState = fillArray2(abbrevState, inFS);
fileByteStream.close();
// Try to open state_population.txt file
fileByteStream = new FileInputStream("state_population.txt");
inFS = new Scanner(fileByteStream);
statePopulation = fillArray3(statePopulation, inFS);
fileByteStream.close();
// Read in ZIP code from user
myZipCode = scnr.nextInt();
String stateAbbreviation = null;
String stateName = null;
Integer statePopulationValue = null;
// Using ZIP code, find state abbreviation
for (i = 0; i < zipCodeState.size(); ++i) {
if (zipCodeState.get(i).getValue1() == myZipCode) {
stateAbbreviation = zipCodeState.get(i).getValue2();
break;
}
}
// Using state abbreviation, find state name
for (i = 0; i < abbrevState.size(); ++i) {
if (abbrevState.get(i).getValue1().equals(stateAbbreviation)) {
stateName = abbrevState.get(i).getValue2();
break;
}
}
// Using state name, find population. Print pair info.
for (i = 0; i < statePopulation.size(); ++i) {
if (statePopulation.get(i).getValue1().equals(stateName)) {
statePopulationValue = statePopulation.get(i).getValue2();
break;
}
}
if (stateName != null && statePopulationValue != null) {
System.out.println(stateName + ": " + statePopulationValue);
}
}
}
```
((Make sure to save this code in separate files named `StatePair.java` and `StatePopulations.java`. Additionally, ensure that you have the input files `zip_code_state.txt`, `abbreviation_state.txt`, and `state_population.txt` in the same directory as the Java files, with the correct data format.))