我需要实现该方法 public static void filter(读者邮件,读者组,编写者用户),它将两个数据组合成一个读者。
邮件文件:
Login;Email
#ivanovjti;ivanov@mail.com
petrovjti;petrov@google.com
obamajti;obama@yahoo.com
和群组文件:
Login;Group
ivanovjti;Java1
petrovjti;Java2
obamajti;Java1
合并的结果应如下所示:
Login;Email;Group
#ivanovjti;ivanov@mail.com;Java1
petrovjti;petrov@google.com;Java2
obamajti;obama@yahoo.com;Java1
我的代码:
package homework_4;
import java.io.*;
public class Main {
public static void filter(Reader mails, Reader groups, Writer users) throws IOException {
BufferedReader brm = new BufferedReader(mails);
BufferedReader brg = new BufferedReader(groups);
BufferedWriter bru = new BufferedWriter(users);
String m = brm.readLine();
String g = brg.readLine();
while (m != null && g != null) {
bru.write(m + ";" + g.split(";")[1] + "\n");
m = brm.readLine();
g = brg.readLine();
}
bru.flush();
}
public static void main(String[] args) throws FileNotFoundException, IOException{
FileReader frm = new FileReader("homework_4_1.txt");
FileReader frg = new FileReader("homework_4_2.txt");
FileWriter fwu = new FileWriter("homework_4_3.txt");
filter(frm, frg, fwu);
frm.close();
frg.close();
fwu.close();
}
}
但我有一个条件。如果文件邮件或文件组包含符号"#",则合并的结果应如下所示:
Login;Email;Group
petrovjti;petrov@google.com;Java2
obamajti;obama@yahoo.com;Java1
我不知道如何做到这一点。哪种方法检查这个特殊符号?
答案 0 :(得分:1)
您有String
个包含每行文件的变量。正如我在您的示例中所看到的,您需要的是忽略包含#
符号的行。 (如果我错了,请纠正。)
String
是否包含其他String
使用String::contains("#")
。 String
是否与另一个String
一起使用
String::startsWith(prefix)
:
String m = brm.readLine();
String g = brg.readLine();
while (m != null && g != null) {
// check if contains # and write otherwise
if(!m.contains("#") && !g.contains("#")) {
bru.write(m + ";" + g.split(";")[1] + "\n");
}
m = brm.readLine();
g = brg.readLine();
}