1

ファイルから行を読み取っていますが、すべての行を読み取った後、while ループの状態が原因で例外が発生すると思います。

Exception in thread "main" java.lang.NullPointerException
    at liarliar.main(liarliar.java:79)

... コード...

// read the first line of the file
iNumMembers = Integer.parseInt(br.readLine().trim()); 

// read file
while ((sLine = br.readLine().trim()) != null) {

    // extract the name and value 'm'
    String[] split = sLine.split("\\s+");
    sAccuser = split[0];
    iM = Integer.parseInt(split[1]);
    saTheAccused = new String[iM];

    for (int i = 0; i < iM; i++) {
        saTheAccused[i] = br.readLine().trim();
    }

    // create member
    // initialize name and number of members being accused
    Member member = new Member();
    member.setName(sAccuser);
    member.setM(iM);
    member.setAccused(saTheAccused);

    veteranMembers.add(member);
}

内部の for ループは数行を読み取る必要があるため、ファイルの最後の行が読み取られると、while が試みreadLine()ますが、ファイル全体が読み取られているため失敗します。では、どのように動作しBufferedReader readLine()、while ループを安全に終了するにはどうすればよいでしょうか?

ありがとう。

4

1 に答える 1

2

readLine()trim()は EOF で null を返し、null 参照で呼び出そうとしています。次のように、呼び出しをtrim()ループ内に移動します。

// read file
while ((sLine = br.readLine()) != null) {

    // extract the name and value 'm'
    String[] split = sLine.trim().split("\\s+");
于 2010-07-28T20:26:49.167 に答える