繁体   English   中英

从文本文件中读取索引和字符串 Java

[英]Read index and strings from text file Java

假设我有一个文本文件,每行都有一个数字代码和一个字符串 label:

0102 Apple Banana Code
0203 Pear Watch Time
0405 Java Computer Pen
0607 Car Bike Drive

我如何打印前面非零数字的总和以及每行的前两个单词? 假设数字始终是 4 位数字,并且单词与数字和单词之间由一个空格分隔。 例如我会得到:

3 Apple Banana 
5 Pear Watch 
9 Java Computer 
13 Car Bike 

我试图初始化它,但我不知道从这里到哪里去 go

FileReader fr = new FileReader(fileName);
BufferedReader inFile = new BufferedReader(fr);
String[][] words = new String[100][];
String line;
int size = 0;
while((line = inFile.readLine()) != null) {
    words[size++] = line.split(" ");
}
inFile.close();

你很接近。 参考下面的代码。 解释出现在代码之后。

import java.io.BufferedReader;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;

public class Tester {
    private static void handleLine(String line) {
        String[] parts = line.split(" ");
        int num = handleNumber(parts[0]);
        System.out.printf("%d %s %s%n", num, parts[1], parts[2]);
    }

    private static int handleNumber(String number) {
        char[] digits = number.toCharArray();
        int total = 0;
        for (char digit : digits) {
            total += digit - '0';
        }
        return total;
    }

    public static void main(String[] args) {
        Path path = Path.of("tragedy.txt");
        try (BufferedReader inFile = Files.newBufferedReader(path)) {
            String line = inFile.readLine();
            while (line != null) {
                handleLine(line);
                line = inFile.readLine();
            }
        }
        catch (IOException xIo) {
            xIo.printStackTrace();
        }
    }
}
  • 我使用 class Files创建BufferedReader但这不是必需的。 您获取BufferedReader的代码是正确的。
  • 我还使用try-with-resources来确保文件已关闭。
  • 您询问了如何在稍微操作文件行后打印它们,这就是上面代码的作用。
  • char实际上是一个数字,因此要从char中获取实际数值,我减去0字符的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM