以下是我们的所有代码供您查看,我将在下面解释以下问题:
import java.io.*;
import java.util.*;
public class Plagiarism {
public static void main(String[] args) {
Plagiarism myPlag = new Plagiarism();
if (args.length == 0) {
System.out.println("Error: No files input");
}
else if (args.length > 0) {
try {
for (int i = 0; i < args.length; i++) {
BufferedReader reader = new BufferedReader (new FileReader (args[i]));
List<String> foo = simplify(reader);
for (int j = 0; j < foo.size(); j++) {
System.out.print(foo.get(j));
}
}
}
catch (Exception e) {
System.err.println ("Error reading from file");
}
}
}
public static List<String> simplify(BufferedReader input) throws IOException {
String line = null;
List<String> myList = new ArrayList<String>();
while ((line = input.readLine()) != null) {
myList.add(line.replaceAll("[^a-zA-Z0-9]","").toLowerCase().trim());
}
return myList;
}
}
是的,这样做是打印出来的:
abcdefabcd123abcdz456aabcdd
此结果实际上是两个单独的文档,text1.txt
和text2.txt
合并为cmd上的一行。我需要的是将这两个文档标准化,然后将它们作为每个值保存的单独元素打印出来,而不是一起作为一个,因为我需要将它们用作下一部分的两个单独的东西(或对象)我的代码。
希望这不是太混乱,你聪明的人可以帮助我!提前谢谢!
答案 0 :(得分:2)
您只是打印出结果,因此当它在循环中运行时,它会在一行上打印出来。
您可以将结果存储在单独的数组中,或者您可以将它们分别打印在不同的行中:
for (int i = 0; i < args.length; i++) {
BufferedReader reader = new BufferedReader (new FileReader (args[i]));
List<String> foo = simplify(reader);
for (int j = 0; j < foo.size(); j++) {
System.out.print(foo.get(j));
}
System.out.println();
}
新的println会将每个条目分开。
答案 1 :(得分:2)
检查这个将逐行打印数据
abcdefabcd123
abcdz456aabcdd
public static void main(String[] args) {
Plagiarism myPlag = new Plagiarism();
if (args.length == 0) {
System.out.println("Error: No files input");
}
else if (args.length > 0) {
try {
for (int i = 0; i < args.length; i++) {
BufferedReader reader = new BufferedReader (new FileReader (args[i]));
List<String> foo = simplify(reader);
for (int j = 0; j < foo.size(); j++) {
System.out.print(foo.get(j));
}
System.out.println();
}
}
catch (Exception e) {
System.err.println ("Error reading from file");
}
}
}
public static List<String> simplify(BufferedReader input) throws IOException {
String line = null;
List<String> myList = new ArrayList<String>();
while ((line = input.readLine()) != null) {
myList.add(line.replaceAll("[^a-zA-Z0-9]","").toLowerCase().trim());
}
return myList;
}
}
答案 2 :(得分:0)
由于您使用System.out.print(),它会被打印成一行,如果您想为每个输出开始一个新行,您可以使用System.out.println()。
但这只是输出问题。在内部,您已经在列表中分离了数据,那么您的实际问题是什么?
答案 3 :(得分:0)
如果要将文件内容保存在两个不同的对象中,请执行以下操作..
List<ArrayList<String>> files = new ArrayList<ArrayList<String>>();
for (int i = 0; i < args.length; i++) {
BufferedReader reader = new BufferedReader (new FileReader (args[i]));
files.add(simplify(reader));
for(ArrayList<String> al : files)
{
for (int j = 0; j < al.size(); j++) {
System.out.print(al.get(j));
}
System.out.println();
}
}
并将您的第二种方法更改为
public static ArrayList<String> simplify(BufferedReader input) throws IOException