java - 跳过 try catch 语句?

标签 java

我正在制作一个 Hangman 游戏,最近实现了一种文件读取方法来随机化单词;但是,在我随机化它读取的行之前测试文件读取器时,我并没有走得太远,并且我的代码似乎跳过了 try catch block ? 以下是使用此方法的构造函数中的行:

word = determineWord();

方法如下:

String determineWord() {
    String fileName = "HangmanWords.txt";

    String line = null;

    try {
        FileReader fileReader = new FileReader(fileName);

        BufferedReader bufferedReader = new BufferedReader(fileReader);

        while((line = bufferedReader.readLine()) != null) {
            line = bufferedReader.readLine();
        } 

        bufferedReader.close();         
    }
    catch(FileNotFoundException ex) {
        System.out.println("Can't open file");                
    }
    catch(IOException ex) {
        System.out.println("Error reading file");                  
    }
    return line;
}

我收到的错误是 NullPointerException,我相信是因为 line 最初设置为 null,并且 word 在我的程序中不能为 null。

最佳答案

您的 while 循环每次迭代读取 2 行。

while((line = bufferedReader.readLine()) != null) {
    line = bufferedReader.readLine();
} 

不要在循环体中再次使用 readLine()

String line = null;
while((line = bufferedReader.readLine()) != null) {
            // do something about the line
} 

关于java - 跳过 try catch 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36461728/

相关文章:

java - 是否可以将 replaceAll() 与通配符一起使用

java - 从包含多个项目的 Rest Assured Json 响应中获取随机字段

java - 我应该在我的方法名称中使用 "get"-prefix 吗?

java - 如何在 java 中做 Actor (erlang)?

java - 我可以将Java中的字符串相乘以重复序列吗?

c# - Java 到 C# - C# 中的 intValue() 等价物

java - 优化 GC 运行时间

java - 在运行时检索 log4j2 配置属性(如果已定义)

java - 为 webapp 存储临时数据的最佳实践

java - 如何在java中自定义使用Gson对象创建的json