【发布时间】:2016-05-25 18:30:41
【问题描述】:
我的任务是创建一个程序,要求用户输入年份、名字和姓氏。然后,它需要年份的最后 2 个数字、整个姓氏和名字的第一个字母,并将它们格式化成这样的电子邮件:16SmithJ@mymail.co.uk。它将这封电子邮件放在不需要打印的文本文件中。最后,它会询问用户是否希望再次重复该过程以发送新电子邮件。
这是我的程序,还没有完全完成。我有它的工作,但是当我去实现如果需要重复它的部分时,电子邮件不再在文件中:
public static void main(String[] args) throws IOException {
PrintWriter pw = new PrintWriter (new FileWriter("7D_mail.txt"));
boolean done = false;
while (done==false){
Scanner kb = new Scanner (System.in);
System.out.print ("Enter the year (e.g 2016) > ");
String year = kb.nextLine();
System.out.print ("Enter your first name > ");
String fname = kb.nextLine();
System.out.print ("Enter your last name > ");
String lname = kb.nextLine();
pw.write (year.substring(2)+lname+fname.charAt(0)+"@mymail.co.uk");
System.out.print ("*** Email created - another one? (Y/N)");
pw.close();
}
}
上面的这个程序可以工作,但是如果我在最后一行之后添加一行(String answer = kb.nextLine();),为答案创建一个新字符串,它不再作品。
public static void main(String[] args) throws IOException {
PrintWriter pw = new PrintWriter (new FileWriter("7D_mail.txt"));
boolean done = false;
while (done==false){
Scanner kb = new Scanner (System.in);
System.out.print ("Enter the year (e.g 2016) > ");
String year = kb.nextLine();
System.out.print ("Enter your first name > ");
String fname = kb.nextLine();
System.out.print ("Enter your last name > ");
String lname = kb.nextLine();
pw.write (year.substring(2)+lname+fname.charAt(0)+"@mymail.co.uk");
System.out.print ("*** Email created - another one? (Y/N)");
String answer = kb.nextLine();
pw.close();
}
}
知道为什么这不起作用吗?谢谢
【问题讨论】:
-
在第一次运行循环之后,您似乎
close文件。 -
将
done = true;更改为done = answer.equals("N");。此外,您可以使用!done代替done == false。如果done是false,请确保不要关闭PrintWriter。 -
恐怕还是不行@Titus
-
还有@tobias_k,即使没有done = true,它也不起作用。
-
尝试 new FileWriter("7D_mail.txt",true) 以追加到文件中。这里的布尔参数告诉您是否要追加到文件中。