首页 > 解决方案 > 当文件扫描器扫描超过 1 个真实语句时,如何将变量合并为一个变量

问题描述

我正在创建一个简单的 Java 程序,但我遇到了一些我没有想到的东西。长话短说,我在我的桌面上创建了一个 word 文件,每一行都有一个数字后跟一个字母。相似的字母具有相同的起始编号。所以我用我在互联网上找到的一些调整实现了一些代码。代码基本上是“如果该行以 001 开头,则 001 旁边的字母/单词将是变量 001Letters”。我使用 java.util.Scanner,我的起始代码是:

 while (scanner.hasNext()) {
    String lineOfText = scanner.nextLine();

    if (lineOfText.startsWith("001")) {
          lineOfText = lineOfText.substring(3);
       System.out.println(lineOfText);
       001Letters.setText(lineOfText);
       ******//001Letters is the JLabel that is suppose // to show all letters within the 001 group******
    }
 }

A-好的。所以我的想法是所有前面有 001 的字母都将被合并。但相反,它只是给了我以 001 及其字母开头的最新行。如果我有 2+ 行以 001 开头,我怎样才能做到这一点,两个字母组合在一起,这样我就可以制作一个变量。一个例子:

001一

002 X

003乙

001 男

001 N

005 升

因此,当它计算并粘贴到我的 GUI 窗口时,它会显示“AM N”。

标签: java

解决方案


在循环内部将每个值附加到一个字符串变量,并在循环完成后将此字符串值设置为Letters001

    String line = "";
    while (scanner.hasNext()) {
        String lineOfText = scanner.nextLine();
        if (lineOfText.startsWith("001")) {
            lineOfText = lineOfText.substring(3);
            System.out.println(lineOfText);
            line += lineOfText + "<br>";
        }
    }
    if (line.length() > 0) {
        line = "<html>" + line.substring(0, line.length() - 4) + "</html>";
    }
    Letters001.setText(line);

推荐阅读