public class Address {
// constants
private static final String NEW_STREET = "New Street";
private static final String NOWHERE_CITY = "Nowhere City";
private static final String FINAL_POSTCODE = "Z9 9ZZ";
// instance fields
private int houseNumber;
private String street;
private String city;
private String postcode;
// constructors
public Address() {
houseNumber = 0;
street = NEW_STREET;
city = NOWHERE_CITY;
postcode = FINAL_POSTCODE;
}
public Address(int h, String s, String c, String p) {
houseNumber = h;
street = s;
city = c;
postcode = p;
}
// set methods
public void setPostcode(String p) {
postcode = p;
}
// testing the postcode format
public boolean isValidPostcode() {
boolean flag = false;
if (postcode.length()==6) {
flag = true;
String space = " ";
for (int i=0; i<5; i++) {
boolean test = false;
switch(i) {
case 0:
case 4:
case 5:
char a = postcode.charAt(i);
test = Character.isUpperCase(a);
break;
case 2:
String b = postcode.substring(i, i+1);
test = space.equals(b);
break;
case 1:
case 3:
char c = postcode.charAt(i);
test = Character.isDigit(c);
break;
}
flag = flag && test;
}
}
return(flag);
}
// deep copy
public Address copy() {
Address a = new Address();
a.houseNumber = houseNumber;
a.street = street;
a.city = city;
a.postcode = postcode;
return(a);
}
// toString method
public String toString() {
return(houseNumber + " " + street + ", " + city + " " + postcode);
}
}
Address.java