Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

I'm finishing up a Java Programming assignment and when I run the Tester it's not working, I'm unsure of what I missed here. There's 4

I'm finishing up a Java Programming assignment and when I run the Tester it's not working, I'm unsure of what I missed here. There's 4 classes to it:

==============================================

public class AddressParser { //Instance Variable private final String address;

//Constructor public AddressParser(String address) { validate(address); this.address = address.trim(); } //Accessor public String getAddress() { return this.address; } //************************ Parsing Methods ************************ // number(), street(), city(), state(), zipCode() // All return a String value //(Internal use) Class Constants private static final char SPACE = ' '; private static final char COMMA = ','; public String number(){ return this.address.substring(0, this.address.indexOf(SPACE)); } public String street(){ return this.address.substring(this.address.indexOf(SPACE), this.address.indexOf(COMMA)).trim(); } public String city(){ return this.address.substring(this.address.indexOf(COMMA) + 1, this.address.lastIndexOf(COMMA)).trim(); } public String state(){ return this.address.substring(this.address.lastIndexOf(COMMA) + 1).trim().substring(0, 2); } public String zipCode(){ return this.address.substring(this.address.lastIndexOf(SPACE) + 1); } //********************* Constructor Helper ************************ // Partial validation/check for standard US address format // AddressException thrown if an invalid format is detected private static void validate(String address) { address = address.trim(); if (address.length() < 16) throw new AddressException("Invalid Length"); //Indexes of first space and comma int space1 = address.indexOf(SPACE); int comma1 = address.indexOf(COMMA); if (space1 < 0 || comma1 < 0) //No space or no comma throw new AddressException("Invalid Address Format"); //Indexes of last space and comma int space2 = address.lastIndexOf(SPACE); int comma2 = address.lastIndexOf(COMMA); if (comma2 == comma1 || space2 == space1) //Only 1 space or 1 comma throw new AddressException("Invalid Address Format"); if (space1 > comma1 || comma2 > space2) //Incorrect comma placement throw new AddressException("Invalid Address Format"); } }

========================================================================

public class MiamiAddressParser extends AddressParser { //Constructor public MiamiAddressParser(String address) { super(address); if ( !this.isMiamiFLAddress() ) throw new AddressException("Not Miami, FL"); } //Return the direction of the street of this Miami, FL address public String direction() { return this.street().substring (0, this.street().indexOf(' ')); } //Return the name of the street of this Miami, FL address public String streetName() { return this.street().substring (this.street().indexOf(' ') + 1); } //Return the zone, NE, NW, SE or SW of this Miami, FL address public String zone() { switch ( this.direction() ) { case "N" : case "S" : return this.miamiAvenueZone(); case "E" : case "W" : return this.flaglerStreetZone(); case "NE": case "NW": case "SE": case "SW": return this.direction(); default : throw new AddressException("Invalid Direction"); } } //Helper Method //Returns the zone, NE, NW, SE, or SW, of this Flagler Street address private String flaglerStreetZone() { if ( !this.streetName().toUpperCase().contains("FLAGLER") ) throw new AddressException("Flagler St Expected"); return this.direction(); } //Helper Method //Returns the zone, NE, NW, SE, or SW, of this Miami Avenue address private String miamiAvenueZone() { if ( !this.streetName().toUpperCase().contains("MIAMI") ) throw new AddressException("Miami Ave Expected"); return this.direction(); } //Helper Method //Returns true if this address is in Miami, FL; returns false otherwise private boolean isMiamiFLAddress() { return this.city().contains("Miami"); } }

=========================================================================

public class AddressException extends RuntimeException { public AddressException() { super(); } public AddressException(String message) { super(message); } }

=========================================================================

import javax.swing.JOptionPane; public class MiamiAddressParserTester { public static void main(String[] args) { String prompt = "Enter a Miami, FL address in standard format" + " number street , city , state zipcode " + " (Click Cancel to quit)" ; String input; do { input = JOptionPane.showInputDialog(null, prompt); if (input != null) { try { MiamiAddressParser parser = null; JOptionPane.showMessageDialog(null, profile(parser)); } catch (AddressException axe) { System.out.println(input + " " + axe.getMessage()); } } } while (input != null); } //Create an address profile of a Miami FL address //For example: /* ********************************************** ADDRESS PROFILE 11200 SW 8 St, Miami, FL 33199

Number: 11200 Street: SW 8 St City: Miami State: FL ZipCode: 33199 Zone: SW *************************************************/ //@Parameter map: A parser for a Miami, FL address private static String profile(MiamiAddressParser map) { return "Address Profile" + " " + map.getAddress() + " Number: " + map.number() + " Street: " + map.street() + " City: " + map.city() + " State: " + map.state() + " ZipCode: " + map.state() + " Zone: " + map.zone(); } }

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Modern Database Management

Authors: Jeff Hoffer, Ramesh Venkataraman, Heikki Topi

12th edition

133544613, 978-0133544619

More Books

Students also viewed these Databases questions