gpt4 book ai didi

java - MailClient作业

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

我遇到了以下问题,我想知道这里是否有人可以提供帮助。错误如下。

Exception in thread "main" java.lang.NullPointerException
at client.Contact.save(Contact.java:35)
at client.Message.save(Message.java:44)
at client.Mailbox.save(Mailbox.java:62)
at client.cmd.Save.run(Save.java:15)
at client.CmdLoop.run(CmdLoop.java:53)
at Main.main(Main.java:41)

Contact.save 方法。 “Contact C=nick...”出现错误

public void save(AddressBook nick, PrintStream print){
Contact C=nick.search(NickName);
if(C!=null)
{
print.println(NickName);
}
else
{
print.println(Email);
}

Message.save 方法 - 出现错误我相信 to.save 和 from.save

public void save(AddressBook nick, PrintStream print){
to.save(nick, print);
from.save(nick, print);
print.println(body);
print.println(subject);
print.println(date);}

最后,Mailbox.save 方法 - “m1.save(nick, myStream)”出现错误

public void save(String fileName){
Message m1 = null;
AddressBook nick = null;
File myFile = new File(fileName);
try {
PrintStream myStream = new PrintStream(myFile);
for(int n=0; n < mailbox.size(); n++)
{
m1 = mailbox.get(n);
m1.save(nick, myStream);
}
} catch (FileNotFoundException e) {System.out.println("Mailbox unable to save to file " + myFile);
e.printStackTrace();}}

抱歉格式化,第一次使用这个网站。

最佳答案

public void save(String fileName){
Message m1 = null;
AddressBook nick = null; // **** null!! ****
File myFile = new File(fileName);
try {
PrintStream myStream = new PrintStream(myFile);
for(int n=0; n < mailbox.size(); n++)
{
m1 = mailbox.get(n);
m1.save(nick, myStream); // **** nick still null! ****
}
} catch (FileNotFoundException e) {System.out.println("Mailbox unable to save to file " + myFile);
e.printStackTrace();
}
}

因此,您将一个空的 nick 传递给 m1.save(...) 方法,然后想知道为什么您会收到 NullPointerException。你不应该感到惊讶。

然后将该 AddressBook 参数传递到您的 to.save(nick, print); 方法调用中:

// the nick parameter is still null
public void save(AddressBook nick, PrintStream print){
to.save(nick, print); // **** and so null is passed in here
from.save(nick, print);
print.println(body);
print.println(subject);
print.println(date);
}

在您调用的那个方法中,nick.search(NickName); 在上面:

// yep, nick is still null
public void save(AddressBook nick, PrintStream print) {
// below you try to call a method off of a null reference
Contact C = nick.search(NickName); // so you get a NPE here ***

但由于它仍然为空,程序会抛出 NPE,这也不足为奇。

解决方案:不要将 null 传递给此方法调用。

更重要的是,您需要了解如何调试 NPE(NullPointerException)的一般概念。 你应该批判性地阅读你的异常的堆栈跟踪以找到错误的代码行,抛出异常的行,然后仔细检查那行,找出哪个变量为空,然后追溯到你的代码看看为什么。你会一次又一次地遇到这些,相信我。

关于java - MailClient作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30019965/

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