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.

Était-ce utile?

La 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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top