// File: read_geodata3.java // // Author: Rahul Simha // Created: Aug 18, 1998 // // Illustrates multi-file encapsulation. Goes // together with useful_io.java. import java.io.*; public class read_geodata3 { public static void main (String[] argv) { // Get file name String filename = useful_io.read_string ("Enter filename: "); try { FileReader fr = new FileReader (filename); LineNumberReader lr = new LineNumberReader (fr); // Now read the input lines boolean over = false; int n_lines = 0; do { String input_line = lr.readLine (); if (input_line != null) { System.out.println ("Line " + (++n_lines) + ": " + input_line); input_line = input_line.trim (); if (input_line.equals ("Circle:")) { // Circle input_line = lr.readLine (); double cx = useful_io.read_property (input_line, "center.x"); input_line = lr.readLine (); double cy = useful_io.read_property (input_line, "center.y"); input_line = lr.readLine (); double r = useful_io.read_property (input_line, "radius"); double area = 3.14159 * r * r; System.out.println ("Circle: cx=" + cx + " cy=" + cy + " r=" + r + " area=" + area); } else if (input_line.equals ("Rectangle:")) { // Rectangle input_line = lr.readLine (); double tx = useful_io.read_property (input_line, "topleft.x"); input_line = lr.readLine (); double ty = useful_io.read_property (input_line, "topleft.y"); input_line = lr.readLine (); double bx = useful_io.read_property (input_line, "bottomright.x"); input_line = lr.readLine (); double by = useful_io.read_property (input_line, "bottomright.y"); double area = (bx - tx) * (ty - by); System.out.println ("Rectangle: tx=" + tx + " ty=" + ty + " bx=" + bx + " by=" + by + " area=" + area); } else if (input_line.equals ("Square:")) { // Square input_line = lr.readLine (); double tx = useful_io.read_property (input_line, "topleft.x"); input_line = lr.readLine (); double ty = useful_io.read_property (input_line, "topleft.y"); input_line = lr.readLine (); double side = useful_io.read_property (input_line, "side"); double area = side * side; System.out.println ("Square: tx=" + tx + " ty=" + ty + " area=" + area); } else { System.out.println ("Unrecognizable: " + input_line); } } else over = true; } while (! over); // Close the file. lr.close(); } catch (IOException e) { System.out.println (e); } } } // End of read_geodata3.java