0

I'm making a phone book and filling it with entries. The entries consist of two Strings for surname and initial, and a telephone number. I'm using an array to store the entries. I'm trying to get the array to print out and I've put toString methods in each class. But when I print out i'm still getting "[LEntry;@8dc8569". I'm not sure what I'm doing wrong. Here's the code.

public class Entry {

String surname;
String initial;
int number;


public Entry(String surname, String initial, int number) {
    this.surname = surname;
    this.initial = initial;
    this.number = number;
}

public String getSurname(){
    return surname;
}

public String getInitial(){
    return initial;
}

public int getNumber() {
    return number;
}

void setNumber(int number){
    this.number = number;
}

public String toString(){
    return surname+ "\t" +initial+ "\t" +number;
}
}


public class ArrayDirectory {

int DIRECTORY_SIZE = 6; 
Entry [] directory = new Entry[DIRECTORY_SIZE];


public void addEntry(String surname, String initial, int num) {

    int i = findFreeLocation();               

    directory[i] = new Entry(surname, initial, num);

}


public void deleteEntry(String surname, String initial) {

    int i = findEntryIndex(surname, initial);                     
    directory[i] = null;
}


public void deleteEntry(int number) {

    int i = findEntryIndex(number);                     
    directory[i] = null;
}


public int findEntry(String surname, String initial) {

    int i;
    i = findEntryIndex(surname, initial);

    return directory[i].getNumber();
}


public void editNum(String surname, String initial, int number) {

    int i;
    i = findEntryIndex(surname, initial);
    directory[i].setNumber(number);
}


public void print() {
    // TODO print array
    System.out.println(directory);
}

private int findEntryIndex(String surname, String initial) {
    int i;
    for (i = 0; i <= DIRECTORY_SIZE; i++) 
    {
        if(directory[i] != null && directory[i].getSurname().equals(surname) && directory[i].getInitial().equals(initial))
        { 
            break;
        }
    }
    return i;
}

private int findEntryIndex(int number) {
    int i;
    for (i = 0; i <= DIRECTORY_SIZE; i++)
    {
        if(directory[i] != null && directory[i].getNumber() == number)
        { 
            break;
        }
    }
    return i;
}


private int findFreeLocation() {
    int i;
    for (i = 0; i < DIRECTORY_SIZE; i++) 
    {                                           
        if(directory[i] == null)
        { 
            break;
        }
    }
    return i;
}

public String toString() {

    for(int i = 0 ; i< DIRECTORY_SIZE ; i++){ 
        System.out.println( directory[i] );
    }
    return null;

}


}


public class Test {

public static void main(String[] args) {

    ArrayDirectory phoneBook = new ArrayDirectory();

    phoneBook.addEntry("Bigger", "R", 2486);
    phoneBook.addEntry("Smaller", "E", 0423);
    phoneBook.addEntry("Ringer", "J", 6589);
    phoneBook.addEntry("Looper", "T", 6723);
    phoneBook.addEntry("Lennon", "B", 4893);
    phoneBook.addEntry("Martin", "M", 2121);

    phoneBook.print();

}

}
1
  • 1
    What do you think this System.out.println(directory); should do and why? Commented Apr 9, 2014 at 16:46

1 Answer 1

4

Use Arrays.toString();

Arrays.toString(directory); 

when you just print directory, which is an instance of array of type Entry, it doesn't override the toString() method the way you are expecting


Also See

Sign up to request clarification or add additional context in comments.

2 Comments

I wanted the entries printed in a table fashion. However with Arrays.toString its just printing as one long line of elements. How do I adjust this?
just iterate through array in a loop and print each element in the format you want

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.