gpt4 book ai didi

java - 我的java程序似乎跳过了try{},执行catch{},然后抛出NullPointerException。我应该怎么办?

转载 作者:行者123 更新时间:2023-12-02 04:43:02 25 4
gpt4 key购买 nike

我正在编写一个程序,用于计算任何给定文本文件中的单词数、音节数和句子数。我不需要帮助查找这些数字,但是即使我正确输入文件名,我的程序(当前应该只查找文本文件中的单词数)也不会导入文本文件。文本文件与源代码位于同一文件夹中。相反,每次我输入的内容都有错误的文件扩展名时,它都会告诉我(请参阅我的 catch{}),然后继续抛出空指针。我不知道是什么原因造成的。有什么建议吗?

import java.io.*;
import java.util.*;

public class Reading_Lvl_Calc {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int words = 0;
String fileName;
Scanner scan;
Scanner keyread = new Scanner(System.in);
System.out.println("Please enter a file name (or QUIT to exit)");
fileName = keyread.nextLine();
File doc = new File(fileName);
//while(scan.equals(null)){
try
{
scan = new Scanner(doc);
}
catch(Exception e)
{
if(fileName.substring(fileName.indexOf(".")) != ".txt")
System.out.println("I'm sorry, the file \"" + fileName + "\" has an invalid file extension.");
else
System.out.println("I am sorry, the file \"" + fileName + " \" cannot be found.\n The file must be in the same directory as this program");
scan = null;
}
// }
while(scan.hasNext()){
words++;
scan.next();
}
System.out.println(words);

}

}

最佳答案

您的 catch 设置 scan = null,然后在下一行(catch 之外)使用 scan.hasNext() - 如果您执行了 catch知道 scan 为空,所以这会给你一个 NullPointerException。

您可能应该重新抛出异常或使代码足够强大以应对空扫描器(即不执行任何操作)

关于java - 我的java程序似乎跳过了try{},执行catch{},然后抛出NullPointerException。我应该怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13205893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com