I am working on extracting values from a tab separated text file into a list in groovy. But am running into the ArrayIndexOutOfBoundsException
.
Code
println("Reading File Contents")
def fullArray = new String[31721][4]
def availableArray = new String[1386][2]
def filteredFullArray = new String[1386][5]
String fileContents = new File('beliefs.txt').text
String availableContents = new File('available.txt').text
def count = 0
fileContents.eachLine { line ->
String[] str
str = line.split('\t')
def subCount = 0
for (subCount; subCount < str.length; subCount++) {
fullArray[count][subCount] = str[subCount]
}
count++
}
beliefs.txt
1 Azerbaijan hasOfficialLanguage Azerbaijani_language
2 Augustus hasChild Julia_the_Elder
3 Arthur_Aikin isCitizenOf England
4 Arthur_Aikin diedIn London
5 Alexander_III_of_Russia isMarriedTo Maria_Feodorovna__Dagmar_of_Denmark_
6 Alexander_III_of_Russia hasChild Nicholas_II_of_Russia
7 Alexander_III_of_Russia hasChild Grand_Duke_Michael_Alexandrovich_of_Russia
8 Alexander_III_of_Russia hasChild Grand_Duchess_Olga_Alexandrovna_of_Russia
9 Alexander_III_of_Russia hasChild Grand_Duke_Alexander_Alexandrovich_of_Russia
10 Alexander_III_of_Russia hasChild Grand_Duke_George_Alexandrovich_of_Russia
...
...
...
31719 Minqi_Li isKnownFor Chinese_New_Left
31720 Henry_Bates_Grubb isKnownFor Mount_Hope_Estate
31721 Thomas_Kuhn isKnownFor Paradigm_shift
Running this gives me the following error.
Caught: java.lang.ArrayIndexOutOfBoundsException: 4 java.lang.ArrayIndexOutOfBoundsException: 4 at extractBeliefs$_run_closure1.doCall(extractBeliefs.groovy:19) at extractBeliefs.run(extractBeliefs.groovy:12)
I am aware of the reason why the above error could occur. But since my array does not exceed the last index and since the error is shown to be at the line fileContents.eachLine { line ->
, I am unable to find where this is going wrong.
Any suggestions in this regard will be highly appreciated.
Your initial error is coming from this line (19):
fullArray[count][subCount] = str[subCount]
Line 12 is just elevating the exception as it exits the closure. This definitely indicates you have an extra tab on one line... for debugging purposes, try printing the line to the console before you attempt to load it into the array. That'll help you identify which line has the error.