import java.io.File;
   import java.io.FileNotFoundException;
   import java.util.Scanner;
   import javax.swing.JOptionPane; 
public class Assignment3 {
 static Place[] places; // the "database' of Place objects
 public static void main(String[] args) {
 // input the zip code database
   readData();
   System.out.println("Done reading data. Found " + places.length + " entries.");
 // Search
   String[] options = { "Do it again?", "Exit" };
   int response = 0;
   String answer;
   do {
   String zip = JOptionPane.showInputDialog("Enter a Zip Code.");
 if (zip != null) {
   // Search
   System.out.println("You asked me to search for Zip Code: " + zip);
   int r = search(zip, places);
   if (r>=0) {
   answer = "The Zip Code " + zip + " belongs to " + places[r];
   }
   else {
   answer = "The Zip Code " + zip + " was not found.";
   }
   // output results
   System.out.println(answer);
   response = JOptionPane.showOptionDialog(null, 
   answer,
 "Results...",
   JOptionPane.YES_NO_OPTION, 
   JOptionPane.QUESTION_MESSAGE, 
   null, // do not use a custom icon
   options, // the titles of buttons
   options[0]); // default button title
   }
   } while (response == 0);
   System.out.println("\nGood Bye!");
   } // main()
 public static int search(String zip, Place[] p) {
   // Searches for zip in the database, p. Brute force sequential search
   for (int i=0; i < p.length; i++) {
   if (p[i].equals(zip)) {
   return i; // found at i!
   }
   }
   return -1; // not found
   } // search()
   
   public static void readData() {
   // Read the zip code data file
   String inputFileName = "Data/testZips.txt";
   int N=0;
   
   try {
   Scanner input = new Scanner(new File(inputFileName));
 if (input.hasNextLine()) {
   // read and parse first line of data file
   String line = input.nextLine();
   String[] linePieces = line.split("[, ]");
   // Extract the number of entries in this data file, N
   N = Integer.parseInt(linePieces[1]);
   }
   
   // Next, read the entire data file
   places = new Place[N];
   
   int i=0;
   while (input.hasNextLine()) {
   String line = input.nextLine();
   
   // Parse the line into its pieces and store in the database
   String linePieces[] = line.split("\t");
   String[] names = linePieces[3].split(", ");
   places[i] = new Place(linePieces[0], names[0], names[1]);
   i += 1;
   }
   
   input.close();
   } catch (FileNotFoundException e) {
   System.out.println("error in opening file: " + inputFileName);
   e.printStackTrace();
   }
 } // readData()
} // class Assignment3