2014-12-06 63 views
0

这是一个项目,我的工作,一部分当我尝试插入元素的数组geneIds我得到这个错误:为什么我会收到一条消息,说明我的数组即使在初始化后也是空的?

java.lang.ArrayIndexOutOfBoundsException: 0 

我有几行之前初始化数组,为什么我不能向它插入元素?

else if (line.startsWith("!dataset_table_begin")) { 
    line = bufferedReader.readLine(); 
    String[] array = line.split("\t"); 
    dataset.sampleIds = Arrays.copyOfRange(array, 2, array.length); 
    dataset.geneIds = new String[(dataset.genesNumber)]; 
    dataset.geneSymbols = new String[(dataset.genesNumber)]; 
    dataset.dataMatrix = new float[dataset.genesNumber][dataset.samplesNumber]; 
    int count = 0; 
    while ((line = bufferedReader.readLine()) != "!dataset_table_end") { 
     String[] arry = line.split("\t"); 
     System.out.println(arry[0]); 
     dataset.geneIds[count] = arry[0]; 
     dataset.geneSymbols[count] = arry[1]; 
     for (int i = 2; i < dataset.samplesNumber; i++) { 
      dataset.dataMatrix[count][i] = Float.parseFloat(arry[i]); 
     } 
     count++; 
    } 
} 
+0

你是如何初始化数组的? – Rozuur 2014-12-06 09:04:11

+0

你确定'dataset.genesNumber'不是'0'吗? – 2014-12-06 09:04:39

+0

是的,我在 – Tam211 2014-12-06 09:05:14

回答

0

您已经从split的结果初始化了数组。

如果行中唯一的字符是制表符,那么您将得到一个空数组。

在使用数组中的任何元素之前,应检查其长度。可以使用line.split("\t", 2)。这将返回数组中的两个元素,即使它们都是空的。

相关问题