嗨,所以我在Java方面比较新,我有大约2个月的经验,所以请尝试使用与我的学习水平相关的术语和代码来回答我的问题。
所以,我必须为学校制作一个写一封信的程序,符合以下格式:
Dear recipient name:
blank line
first line of the body
second line of the body
. . .
last line of the body
blank line
Sincerely,
blank line
sender name
我的代码如下:
private String body;
private String letter;
public Letter(String from, String to)
{
letter = ("Dear " + to + ":" + "\n" + "\n" + body + "\n" + "Sincerely," + "\n" + "\n" + from);
body = "";
}
public void addLine(String line)
{
body = body + line + "\n";
}
public String getText()
{
return letter;
}
我已经尝试了几种不同的方法来完成这个程序,并且产生最佳结果的方法是这一个......事实是,我们只应该使用两个实例字段max。它似乎是null,因为body在我的构造函数中没有给出值。还有一个程序测试器类,如下所示:
public class LetterTester
{
public static void main(String [] args)
{
Letter tyler = new Letter("Mary", "John");
tyler.addLine("I am sorry we must part.");
tyler.addLine("I wish you all the best.");
System.out.println(tyler.getText());
}
}
我跳过所有默认的东西和一些大括号,并且没有语法错误,但是当我运行测试人员类时,我得到:
Dear John:
null
Sincerely,
Mary
我做错了什么,有人可以就如何摆脱null提出解决方案吗?请记住,我只能使用两个实例字段,谢谢。
答案 0 :(得分:0)
您必须使用空字符串初始化body
变量。否则,它被初始化为null
,因此您无法在函数addLine()
答案 1 :(得分:0)
body
为null
,因为这是参考字段的默认值。您可以将其初始化为空字符串body = ""
。这适用于您的addLine()
代码。您还应该将构造函数中的内容构建到getText()
。在构造函数中,所需的数据尚不可用。
另请考虑使用StringBuilder。当你需要进行多次连接时,这通常比+
更好。
编辑(在OP澄清评论之后,我自己更好地阅读了这个问题)
在构造函数中,您可以像以下字母一样开头:
body = "Dear " + to + ":" + "\n\n";
sender = from;
在这里,我将sender
作为一个字段。您不需要letter
字段,因此您仍然可以保持最多2个字段限制。