gpt4 book ai didi

java - 存储文本文档中的字符串并将其打印到屏幕上

转载 作者:行者123 更新时间:2023-12-01 22:43:46 25 4
gpt4 key购买 nike

所以到目前为止我有这段代码:

import java.util.*;
import java.io.*;

public class EmailMerge {

public static void main(String[] args) throws IOException {

Scanner templateReader = null;
Scanner peopleReader = null;

PrintWriter out = null;

String template = "";
ArrayList people = new ArrayList();

try {

templateReader = new Scanner(new FileInputStream("template.txt"));
peopleReader = new Scanner(new FileInputStream("people.txt"));

while(templateReader.hasNext()) {
//System.out.print(templateReader.next());
template = templateReader.next();
}

System.out.println(template);
}
catch(FileNotFoundException e)
{
System.out.println("File(s) not found...");
System.exit(0);
}
}
}

我有一个名为 template.txt 的文本文档,其中包含以下内容:

Dear <<N>>,

Because you are <<A>> years old and <<G>>, we have a
free gift for you. You have absolutely nothing to buy;
just pay the shipping and handling charge of $9.99. To
claim your gift, call us immediately.
Thank you,

Office of Claims Department

我还有另一个名为 people.txt 的文本文档,其中包含人员的姓名和年龄,如下所示:

John, 38, Male
Mary, 22, Female
so on and so forth...

我要做的就是检查列表中的所有名称,并使用模板制作个性化消息。然后我必须将每个保存到一个唯一的文本文档(即 John.txt)。我想做的是将列表上的名字存储到一个 ArrayList 中,我称之为 people,然后将模板存储到一个字符串中,我称之为 template。

但是,当我尝试打印模板时,我的问题出现了。我无法判断我是否存储错误,或者是否有更好的方法将其打印出来,但是当我使用此代码时,我只是将“部门”打印到屏幕上。我需要将整个内容存储在字符串模板中,并能够以正确的格式将其打印到屏幕上,如上面所示。请帮忙,非常感谢!!

更新:非常感谢你们的帮助!还有一个问题。我终于完成了项目,我已将所有必要的信息存储到几个 ArrayList 中,但是当我尝试打印模板时,它会起作用,但它会打印大约 1000 次。这是我正在使用的循环:

for(int j = 0; j < people.size(); j++){
for(int i = 0; i < names.size(); i++){
System.out.println(template.replace("<<N>>", names.get(i)).replace("<<A>>", ages.get(i)).replace("<<G>>", genders.get(i)));
}
}

我将所有姓名/年龄/性别存储到相应的 ArrayList 中。再次感谢!

最佳答案

您每次都会替换模板字符串变量,而不是更新它(追加)。尝试下面的代码:

template += templateReader.next();

或者更好 - 正如 Luiggi 在评论中所述 - StringBuilder:

StringBuiler builder = new StringBuilder("");
while(templateReader.hasNext()) {
//System.out.print(templateReader.next());
builder.append(templateReader.next());
}
template = builder.toString();

StringBuffer 提供更好的 performance+ 运算符更有效,因此每当您在循环中附加 String 时(如本例所示),最好使用它。

关于java - 存储文本文档中的字符串并将其打印到屏幕上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25677080/

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