将两个读者“合并”为一个具有特殊条件的作者
“merge” two readers into one writer with special condition
我需要实现方法
public static void filter(Reader mails, Reader groups, Writer users) 以这样一种方式将来自读者的两条数据组合成一个作者。
邮件文件:
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
我不知道怎么做。哪个方法检查这个特殊符号?
您有 String
s 个变量,其中包含文件的每一行。正如我在您的示例中看到的那样,您需要的是忽略包含 #
符号 的行。 (如果我错了请纠正我)。
- 要检查
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();
}
我需要实现方法 public static void filter(Reader mails, Reader groups, Writer users) 以这样一种方式将来自读者的两条数据组合成一个作者。
邮件文件:
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
我不知道怎么做。哪个方法检查这个特殊符号?
您有 String
s 个变量,其中包含文件的每一行。正如我在您的示例中看到的那样,您需要的是忽略包含 #
符号 的行。 (如果我错了请纠正我)。
- 要检查
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();
}