Java两个不同的文件,完成的东西,但现在他们是一个..希望他们分开

时间:2014-03-13 16:32:06

标签: java object arraylist text-files

以下是我们的所有代码供您查看,我将在下面解释以下问题:

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.txttext2.txt合并为cmd上的一行。我需要的是将这两个文档标准化,然后将它们作为每个值保存的单独元素打印出来,而不是一起作为一个,因为我需要将它们用作下一部分的两个单独的东西(或对象)我的代码。

希望这不是太混乱,你聪明的人可以帮助我!提前谢谢!

4 个答案:

答案 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