【问题标题】:Java two different documents, done stuff but now they are one.. want them separateJava 两个不同的文档,完成的东西,但现在它们是一个.. 想要它们分开
【发布时间】:2014-03-13 16:32:05
【问题描述】:

这是我所有的代码给你们看,我将在下面解释问题:

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上合并成一行。我需要将这两个文档标准化,然后将它们各自持有的每个值作为单独的元素打印出来,而不是作为一个整体打印出来,因为我需要在下一部分将它们用作两个单独的事物(或对象)我的代码。

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

【问题讨论】:

  • 我很难正确理解您的最终目标是什么。也许将您的预期输出添加到原始问题会更清楚。
  • @arooaroo 打印输出只是一个测试。接下来我需要用代码(将 2 个单独的文档输入到命令行)将 2 个文档分成 n 个字符块(例如 3 个)。这就是我需要将它们分开的原因。
  • 我得到了这个问题,但是你想做什么。你想存储 text1.txt 和 text2.txt ... 数据以不同方式存储 mi ri8?

标签: java object arraylist text-files


【解决方案1】:

你只是打印出结果,所以当它运行循环时,它会在一行上打印出来。

您可以将结果存储在单独的数组中,或者您可以这样做让它们分别打印在不同的行上:

            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 将分隔每个条目。

【讨论】:

    【解决方案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;  
    }
    

    }

    【讨论】:

      【解决方案3】:

      因为您使用 System.out.print(),所以它被打印到一行,如果您想在每个输出开始新的一行,您可以只使用 System.out.println()。

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

      【讨论】:

      • 输出只是一个测试来测试它。我的实际意思是,对于下一部分,我必须将两个输入文本文档分成 n 个字符块(例如,3 个)。所以我需要将它们分开,这样我就可以分别对它们执行此任务
      • 但是您已经将这两个文档分开了。 myList.get(0) 是第一个文件,myList.get(1) 是第二个文件。
      • 您总是可以通过接受答案来表达您的感激之情;)
      【解决方案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
      

      【讨论】:

        猜你喜欢
        • 2012-04-11
        • 1970-01-01
        • 2012-07-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-18
        • 2013-08-21
        相关资源
        最近更新 更多