有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

对象Java两个不同的文档,完成了一些工作,但现在它们是一个。。要分开吗

下面是我所有的代码供大家看,我将在下面解释问题:

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

  1. # 1 楼答案

    它被打印成一行,因为你使用了这个系统。出来print(),您可以使用系统。出来println(),如果要在每个输出中开始新行

    但这只是产量的问题。在内部,您已经在列表中分离了数据,那么您的实际问题是什么

  2. # 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将每个条目分开

  3. # 3 楼答案

    选中此选项将逐行打印数据

    abcdefabcd123

    ABCDZ456ABCDD

       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;  
    }
    

    }

  4. # 4 楼答案

    如果要将文件内容保存在两个不同的对象中,请执行以下操作

    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