1

ファイルから読み取り、ファイルの各行を配列「Titles」に追加しようとしていますが、エラーが発生し続けます。

スレッド「メイン」の例外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++;              
}

前もって感謝します!

4

2 に答える 2

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.

この場合、Arrayの代わりにArrayListを使用することをお勧めします。ArrayListは動的であるため(サイズを指定する必要はありません)

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

       while (m_line != null)              
      {       
        titles.add(m_line);               
       }
于 2012-11-05T00:19:37.203 に答える
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 ;
于 2012-11-05T00:19:49.030 に答える