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



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

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 

我已经尝试初始化这个,但我不知道从这里去哪里

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();
}
}
}
  • 我使用类文件来创建BufferedReader,但它不是必需的。您获取BufferedReader的代码是正确的。
  • 我还使用try-with-resources来确保文件被关闭。
  • 你问如何在稍微操作后打印文件行,这就是上面代码的作用。
  • char实际上是一个数字,所以为了从char中得到实际的数值,我减去0字符的值。

最新更新