0 means you are trying to access index 0 which is invalid, which in turn means the array is empty.
String[] names = new String[0]; // thats the problem
String[] names = new String[somelength];//this is true usage
Since in java the first position of an array is 0, if an array has
length 3 then the last element is in position 2.
Ex: array = [elem0, elem1, elem2] then the last elem is index 2
and the array has length 3
The Array is empty.