Question

I am trying to make an Array that starts at an initial size, can have entries added to it. (I have to use an Array). To print the Array I have to following code :

public String printDirectory() {
        int x = 0;
        String print = String.format("%-15s" + "%-15s" + "%4s" + "\n", "Surname" , "Initials" , "Number");
//      Sorts the array into alphabetical order
//      Arrays.sort(Array);
        while ( x < count ){
            Scanner sc = new Scanner(Array[x]).useDelimiter("\\t");
            secondName[x] = sc.next();
            initials[x] = sc.next();
            extension[x] = sc.next();
            x++;
        }

        x = 0;
        while ( x < count){
            print += String.format("%-15s" + "%-15s" + "%4S" + "\n", secondName[x] , initials[x] , extension[x]);
            x++;
        }
        return print + "" + Array.length;


    }

Please ignore the extra Array.length, on the return statement.

Anyways this is working fine, firstly the Array reads a file which is formated like NameInitialsnumber on each line.

So I tried making a newEntry method and it causes problems when I want to print the Array. When I add a new entry, if the Array is too small, it will make the array bigger and add the entry. I made methods to make sure this worked and it does work. The following code for this method is:

public void newEntry(String surname, String in, String ext) {

        if (count == Array.length) {
            String entry = surname + "\t" + in + "\t" + ext;
            int x = Array.length + 1;
            String[] tempArray = new String[x];
            System.arraycopy(Array, 0, tempArray, 0, Array.length);
            Array = tempArray;
            Array[count] = entry;
            Arrays.sort(Array);
        } else {
            String entry = surname + "\t" + in + "\t" + ext;
            Array[count] = entry;
            Arrays.sort(Array);
        }
        count++;
    }

The problem is when I then call the printDirectory method it has problems with sc.next(). The error message is as follows:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7
    at ArrayDirectory.printDirectory(ArrayDirectory.java:106)
    at ArrayDirectory.main(ArrayDirectory.java:165)

Im really new to coding and im not sure what is wrong. I know its something wrong with the new entry but im not sure what. Really grateful for any help. Thanks.

Was it helpful?

Solution

It seems that your other arrays secondName, initials, and extension are not large enough.

You need to make them bigger as well. Or even better, when you think a bit about it you will recognize that you do not need them at all.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top