// % java Convert < ST_LOW48.BNA public class Convert { public static void main(String[] args) { // parse states.txt file int STATES = 57; String[] states = new String[STATES]; String[] usps = new String[STATES]; In in = new In("states.txt"); while (!in.isEmpty()) { String line = in.readLine(); String[] fields = line.split(","); int fips = Integer.parseInt(fields[2]); states[fips] = fields[0]; usps[fips] = fields[1]; } // now process data while (!StdIn.isEmpty()) { String line = StdIn.readLine(); String[] fields = line.split(","); int fips = Integer.parseInt(fields[0].replaceAll("\"", "")); int N = Integer.parseInt(fields[3]); Point p0 = new Point(StdIn.readDouble(), StdIn.readDouble()); Polygon poly = new Polygon(); poly.add(p0); for (int i = 1; i < N - 1; i++) { Point p = new Point(StdIn.readDouble(), StdIn.readDouble()); if (p.eq(p0)) { // separate polygon System.out.println(states[fips]); // System.out.println(usps[fips]); System.out.println("USA"); System.out.println(poly); poly = new Polygon(); p = new Point(StdIn.readDouble(), StdIn.readDouble()); i++; } poly.add(p); } System.out.println(states[fips]); // System.out.println(usps[fips]); System.out.println("USA"); System.out.println(poly); StdIn.readLine(); // ignore last point - it is same as first StdIn.readLine(); // eat up rest of whitespace on current line } } }