-1

I have this code, and I keep getting an array index out of bounds error. I really do not know why. Can anyone please explain me why?

        String[] splitter= entry.split(" ");
     
        String name = "";
        String burialDate = "";
        String age = "";

        for(int i = 0; i < entry.length(); i++)
        {
            if(splitter[i].equals(""))
            {
                if((splitter[i].charAt(0) <= '9' && splitter[i].charAt(0) >= '0'))
                {
                    int index = i;
                    break;
                }

                else
                    name = name + splitter[i] + " ";
            }
        }
        name = name.substring(0, name.length()-1);
        burialDate = splitter[index] + " " + splitter[index+1] + " " + splitter[index+2];
        age = splitter[index+1];

        Person person = new Person(name, burialDate, age);

        return person;

1 Answers1

0

Your int index was defined inside the for loop, inside a nested if statement. Quite frankly, the scope of the int is extremely limited.

You should be defining the int index outside of the for loop like so:

String[] splitter= entry.split(" ");

String name = "";
String burialDate = "";
String age = "";
int index = 0;
for(int i = 0; i < entry.length(); i++)
{
    if(splitter[i].equals(""))
    {
        if((splitter[i].charAt(0) <= '9' && splitter[i].charAt(0) >= '0'))
        {
            index = i;
            break;
        }

        else
            name = name + splitter[i] + " ";
    }
}
name = name.substring(0, name.length()-1);
burialDate = splitter[index] + " " + splitter[index+1] + " " + splitter[index+2];
age = splitter[index+1];

Person person = new Person(name, burialDate, age);

return person;
Spectric
  • 5,761
  • 2
  • 6
  • 27