Java编写单词解扰器出现Cannot read the array length because "contents" is null错误怎么办
错误产生原因
- 核心直接原因:你的
txtToString方法在无法找到指定的allwords.txt文件时,捕获了FileNotFoundException后未做任何处理,最终会返回null,该返回值被赋值给contents变量后,后续执行contents.length读取数组长度的操作就会触发空指针异常。 - 附带隐藏问题(解决文件路径问题后也会触发错误):
- 行数统计逻辑存在死循环:你使用
Scanner g统计文件行数时,仅判断了g.hasNextLine(),但没有调用g.nextLine()移动文件读取指针,只要文件不为空,这个循环会永远卡住无法向下执行。 - 读写逻辑不匹配:你统计行数用的是
hasNextLine()按行计数,但读取内容时用的是helloReader.next()按空白符分割读取,如果你的单词文件里一行存在多个单词,后续读取时会触发数组越界异常。
- 行数统计逻辑存在死循环:你使用
- 路径注意事项:你传入的是相对路径
allwords.txt,需要保证该文件放在项目的运行工作目录下,而非源码目录等其他位置,否则JVM运行时会找不到文件,触发异常返回null。
内容的提问来源于stack exchange,提问作者siddharth_celadon
相关产品推荐
相关产品推荐

