How to declare, initialize, and print a medium complexity, varied, feature‑rich data structure in Java

1 Answer

0 votes
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

class Address {
    String street;
    String city;
    int zip;
}

enum Status {
    ACTIVE, INACTIVE, UNKNOWN
}

class Person {
    Address homeAddress;
    int[] favoriteNumbers;
    String nickname;
    LocalDate birthDate;
    String notes;
    Optional<String> middleName;
    List<String> hobbies;
    Status status;

    Person() {
        homeAddress = new Address();
        favoriteNumbers = new int[5];
        nickname = null;
        birthDate = LocalDate.of(1990, 1, 1);
        notes = "No notes";
        middleName = Optional.empty();
        hobbies = new ArrayList<>();
        status = Status.UNKNOWN;
    }
}

public class Main {
    static void printPerson(Person p) {
        System.out.println("Address: " +
                p.homeAddress.street + ", " +
                p.homeAddress.city + " " +
                p.homeAddress.zip);

        System.out.print("Favorite Numbers: ");
        for (int n : p.favoriteNumbers) {
            System.out.print(n + " ");
        }
        System.out.println();

        System.out.println("Nickname: " +
                (p.nickname != null ? p.nickname : "(none)"));

        System.out.println("Birth Date: " + p.birthDate);

        System.out.println("Notes: " + p.notes);

        System.out.println("Middle Name: " +
                p.middleName.orElse("(none)"));

        System.out.print("Hobbies: ");
        for (String h : p.hobbies) {
            System.out.print(h + ", ");
        }
        System.out.println();

        System.out.println("Status: " + p.status);
    }

    public static void main(String[] args) {
        Person p = new Person();

        p.homeAddress.street = "Fifth Avenue";
        p.homeAddress.city = "New York";
        p.homeAddress.zip = 423900;

        p.favoriteNumbers = new int[]{7, 13, 21, 42, 99};

        p.nickname = "Orion";

        p.birthDate = LocalDate.of(1026, 6, 15);

        p.notes = "Voss likes C/C++ and structs";

        p.middleName = Optional.of("Pulse-9");

        p.hobbies.add("Coding");
        p.hobbies.add("Dreaming");
        p.hobbies.add("Walking");
        p.hobbies.add("Sci-Fi Movies");

        p.status = Status.ACTIVE;

        printPerson(p);
    }
}



/*
run:

Address: Fifth Avenue, New York 423900
Favorite Numbers: 7 13 21 42 99 
Nickname: Orion
Birth Date: 1026-06-15
Notes: Voss likes C/C++ and structs
Middle Name: Pulse-9
Hobbies: Coding, Dreaming, Walking, Sci-Fi Movies, 
Status: ACTIVE

*/

 



answered Sep 2 by avibootz

Related questions

...