从文件读取到数组时出错

时间:2012-11-05 00:13:19

标签: java arrays file

我正在尝试从文件中读取并将文件中的每一行添加到我的数组“标题”中,但不断收到错误:

  

线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:0

任何想法?由于行读取,我收到错误:

      Titles[lineNum] = m_line;                 

我的代码:

String[] Titles={};
int lineNum;            
m_fileReader = new BufferedReader(new FileReader("random_nouns.txt"));
m_line = m_fileReader.readLine();           
while (m_line != null)              
{       
        Titles[lineNum] = m_line;               
        m_line = m_fileReader.readLine();               
        lineNum++;              
}

提前谢谢!

2 个答案:

答案 0 :(得分:0)

数组索引以0开头。如果数组的长度为N,则最后一个索引为N-1。目前你的数组的长度为零,你试图访问索引为0的元素(确实存在)。

String[] Titles={};//length zero

和你的while循环

 Titles[lineNum] = m_line;  //trying to access element at 0 index which doesnt exist.

我建议你在你的情况下使用 ArrayList 而不是Array。因为ArrayList是动态的(你不必为它提供大小)

     List<String> titles = new ArrayList<String>();

       while (m_line != null)              
      {       
        titles.add(m_line);               
       }

答案 1 :(得分:0)

数组不像ArrayList那样可增长。在字符串数组中添加元素之前,您需要指定String[]

的大小
String titles[] = new String[total_lines] ;

或者您可以简单地在ArrayList中添加每一行,然后最终转换为类似

的数组
int totalLineNumbers;
ArrayList<String> list = new ArrayList();            
m_fileReader = new BufferedReader(new FileReader("random_nouns.txt"));                  m_line = m_fileReader.readLine();           
while (m_line != null)              
{       
        list.add(m_fileReader.readLine());

}
String titles[] = (String[]) list.toArray();
totalLineNumbers = titles.length ;