【问题标题】:How to write to file the output from program like a matrix, Java如何将程序的输出写入文件,如矩阵、Java
【发布时间】:2018-05-24 09:34:47
【问题描述】:

我正在尝试计算文件中的重复单词,我想将我的输出写入文件

   public static void main(String a[]){
    MaxDuplicateWordCount mdc = new MaxDuplicateWordCount();
    Map<String, Integer> wordMap = mdc.getWordCount("C:/Users/Arnoldas/Desktop/Hamletas.txt");
    List<Entry<String, Integer>> list = mdc.sortByValue(wordMap);
    for(Map.Entry<String, Integer> entry:list){
        System.out.println(entry.getKey()+" ==== "+entry.getValue());
    }
}

现在的输出如下所示:

hamletui ==== 4
šmėkla ==== 2
jo ==== 2
hamletas ==== 1
danijos ==== 1
pagrindiniam ==== 1
mirusio ==== 1
princui ==== 1
herojui, ==== 1
apsireiškusi ==== 1
karalystės ==== 1
paveda ==== 1
parketas ==== 1
herojui ==== 1
žudikui ==== 1
neseniai ==== 1
omletas ==== 1
atkeršyti ==== 1
tėvo ==== 1

我想把这个输出放到文件中,它应该是这样的:

               | hamletui | šmėkla | jo  | hamletas | danijos | pagrindiniam |   ...
-------------------------------------------------------------------------------------
Hamletas.txt   |     4    |    2   |  2  |    0     |    0    |      0       |   ...
-------------------------------------------------------------------------------------
Other_file.txt |     0    |    0   |  6  |    3     |    4    |      1       |   ...

这样可以吗?我也想从其他文件中获取输出。 有什么想法吗?

【问题讨论】:

  • 有可能。您只需计算所有相关单词和文件名的长度,然后将其全部打印出来,并在其间加上相关空格。如果 HTML 没问题,您可以编写一个 html 文件并在那里使用表格。这样会更容易格式化。
  • 查看以下帖子:link
  • @RalfRenz html 没问题,但你有例子吗?
  • @JRobes 谢谢。我找不到将所有故事写入文件的位置

标签: java file matrix output


【解决方案1】:

好的。如何使用表格将其编写为 HTML 文件的示例。 输入是以文件名作为键的映射和带有计数的单词映射。 首先,它查看地图中提到了哪些单词。然后它编写 HTML。 第一个表行包含所有这些单词,之后为每个文件名创建一行,其中包含单词数。

public static void main(String a[]) {
    Map<String, Map<String, Integer>> wordMaps = new HashMap<>();

    wordMaps.put("Hamletas.txt", new HashMap<String, Integer>());
    wordMaps.get("Hamletas.txt").put("hamletui", 4);
    wordMaps.get("Hamletas.txt").put("šmėkla", 2);
    wordMaps.get("Hamletas.txt").put("jo", 2);

    wordMaps.put("Other_file.txt", new HashMap<String, Integer>());
    wordMaps.get("Other_file.txt").put("jo", 6);
    wordMaps.get("Other_file.txt").put("hamletas", 3);
    wordMaps.get("Other_file.txt").put("danijos", 4);
    wordMaps.get("Other_file.txt").put("pagrindiniam", 1);

    writeHtmlFile("example.html", wordMaps);
}

public static void writeHtmlFile(String filename, Map<String, Map<String, Integer>> wordMaps) {
    // get all words that are duplicates
    Set<String> words = new HashSet<>();
    for (Map<String, Integer> map : wordMaps.values()) {
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            if (entry.getValue() > 1) {
                words.add(entry.getKey());
            }
        }
    }

    try (PrintWriter out = new PrintWriter(new FileWriter(filename))) {
        out.println("<!DOCTYPE html><html>");
        out.println("<head><meta charset=\"utf-8\"/></head");
        out.println("<body>");
        out.println("<table border=\"1\">");

        // write Headline
        out.println("<tr>");
        out.println("<td>&#160;</td>"); // empty cell
        for (String word : words) {
            out.println("<td>" + word + "</td>"); // empty cell
        }
        out.println("</tr>");

        // write for all files
        for (Map.Entry<String, Map<String, Integer>> fileWordMap : wordMaps.entrySet()) {
            out.println("<tr>");
            out.println("<td>" + fileWordMap.getKey() + "</td>"); // filename
            Map<String, Integer> wordMap = fileWordMap.getValue();
            for (String word : words) {
                out.println("<td align=\"right\">" + (wordMap.containsKey(word) ? wordMap.get(word) : 0) + "</td>"); // number per
                                                                                                     // word or 0
            }
            out.println("</tr>");
        }

        out.println("</table>");
        out.println("</body>");
        out.println("</html>");
    } catch (IOException e) {

    }
}

【讨论】:

  • 谢谢,但是这个不是从文件中读取的吗? :) 我希望这段代码能从文件中获取所有信息 :) 以及如何将其发送到 servlet? @RalfRenz
  • 我认为您解决了第一部分 - 如何从文件中获取相关信息。由于您的方法 getWordCount() 不在您的源代码中,因此我没有重新创建它,而是直接填充了相关结构。
  • 哦,我明白了 :) 但是如何让您的代码获取有关上次上传文件的数据?我应该把我的代码放在这里吗?
  • 我的方法 writeHtmlFiles 采用一个 Map,文件名作为键,对应的 wordmap 作为值。如何填充结构取决于您。在您的代码中,您只需为一个文件 Hamletas.txt 创建字图。这将是我的数据结构中的一个条目。如果您可以为一个文件执行此操作,您也可以为其他文件执行此操作。
猜你喜欢
  • 2021-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-08
  • 2016-09-25
  • 2021-11-16
  • 1970-01-01
相关资源
最近更新 更多