0

http://pastebin.com/m5fa7685e

获取 f3.. 时似乎失败了。输出为:

还没好

文件为空
线程“主”java.lang.NullPointerException 中的异常
    在 BuabFile.parseBUAB(BuabFile.java:93)
    在 AddressBook.createBrowseForm(AddressBook.java:232)
    在 AddressBook.(AddressBook.java:51)
    在 Main.main(Main.java:4)"

但不是在那之前 - 没有文件未找到错误或任何东西......

4

4 回答 4

1

我的猜测是 parseBUAB() 方法接收一个“空”参数。这意味着它可能是 AddressBook 类对错误负责。

于 2009-11-23T17:35:13.270 回答
0

从我所见,你只是parseBUAB(..)用一个null值来调用。我看不到对该方法的调用,因此您必须检查其余代码。

对于您的“未准备好”输出,这是因为您的 BufferedReader f3 未准备好而创建的,API 说

如果保证下一个 read() 不会阻塞输入,则为 true,否则为 false。

也许您只是调用它太快而文件尚未加载。在流上调用 ready() 之前使用 Thread.sleep() 播放。也许几毫秒的阻塞对于文件 I/O 来说是正常的。

第三 - 如果f3是要保留的 BufferedReader,则必须将其分配给readFile()方法中的成员文件。但现在这就是我发现的全部;)

于 2009-11-23T17:36:21.537 回答
0

看起来您忘记为BuabFile.file静态字段分配值。您可能希望将其添加到readFile()方法的末尾:

BuabFile.file = f3;

我猜你的AddressBook.createBrowseForm方法看起来像这样:

String filename = ...;
BuabFile buab = new BuabFile(filename);
buab.readFile();
ArrayList<String> buabLines = buab.returnFile(); // Returns null because readFile() never assigned a value to BuabFile.file
ArrayList<Buab> buabList = buab.parseBUAB(buabLines);
于 2009-11-23T17:37:31.673 回答
0

我很困惑,但找到了一个答案——我使用的是 Windows 7,并在 Windows XP 计算机上尝试过,代码编译良好并读入文件(你注意到的其他错误无论如何都要更改通过开发-这只是阻碍...)。

我想知道eclipse和打开/读取文件是否存在一些Windows 7错误......

于 2009-11-23T18:05:46.233 回答