gpt4 book ai didi

java - Java 中的空指针异常,不知道为什么

转载 作者:行者123 更新时间:2023-11-30 04:34:46 25 4
gpt4 key购买 nike

我一直在编写一个 Java 程序 - 具体来说是一个 Bukkit 插件,尽管这与问题无关 - 并且由于某种原因我看不到我收到了 NullPointerException。下面摘录的是出现错误的代码。 getPath() 经过充分测试并生成正确的目录 - 即配置文件应位于的目录。配置文件已创建,并且应已写入。我的测试程序文件已成功创建,配置文件也应该如此。

File config = new File(getPath("config"));
BufferedReader in = new BufferedReader(new FileReader(config));
skipLines(11, in);
if(in.readLine().equalsIgnoreCase("true")) { //Exception is here
System.out.println("Successfully wrote to config file");
}
else {
System.out.println("Failed to write text correctly to config file");
}
in.close();

整个事情都包含在 try/catch 语句中。
如果您需要更多信息,请询问,我很乐意提供。
注意:该文件工作正常 - 当我手动检查时,该文件上有文字。这就是问题存在的原因。
写入文件的代码如下:

File exConfig = new File(System.getProperty("user.dir") + File.separator + "configExample");
PrintWriter out = new PrintWriter(new FileWriter(config));
BufferedReader in = new BufferedReader(new FileReader(exConfig));
for(int i = 1; i <= configLength; i++) {
out.println(in.readLine());
}
out.flush();
out.close();
System.out.println("Successfully wrote defaults to config");

configLength 是一个等于配置中行数的变量。我已经测试过它并且有效。那里可能有什么奇怪的地方。名为“configExample”的文件如下:

########################################
# hPlugin is written by newbiedoodle #
########################################
# ----- Plugin config file ----- #
########################################
hPlugin
v.0.3
NOTE: Do not edit the config file besides changing the values - it may result in errors.
--------------
Enable hPlugin?
true
Strikes before being banned?
3
Godmode?
true
First time running the plugin?
true
Curse protection?
true
Emergency shelter?
true
Path building?
true
Blocked words/phrases (Separate with colon (:)):
shit:fuck:damn:bitch:hell

如您所见,这应该超过 11 行...如果第 11 行不是“true”,那么它仍然不会导致错误。

好吧,经过一番闲逛后,我让它开始工作......结果是,我有一个变量搞砸了,因为一个函数有一个文件名硬编码到其中,而不是设置为我试图传递的变量。不过还是感谢您的帮助!

最佳答案

异常(exception)情况很明显,您的 BufferedReader 中没有任何内容可供读取。因此,in.readLine() 返回 null,因此调用 in.readLine.equalIgnorecase() 返回 NullPointerException。

在继续之前,您应该首先检查 BufferedReader.readLine() 是否返回 null。

if(in.readLine().equalsIgnoreCase("true")) {   //Exception is here

应该是

String line=null;
while((line=in.readLine())!=null) { //if in.readLine() returns null, the condition fails
if(line.equalsIgnoreCase("true")) {
//do your stuff
}
}

关于java - Java 中的空指针异常,不知道为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13756362/

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