我在考虑使用BufferedReader (尽管在我的第一次试验中使用了扫描仪),然后使用.add()将数据提取到ArrayList中,但不确定如何实现,因为我是编程新手。任何帮助都将不胜感激
发布于 2020-09-24 05:07:23
使用扫描仪对象(https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#nextLine() )的nextLine()方法,您可以获取文本文件的每一行。
获取STID列非常简单,因为它是第一个列,并且总是从行首开始。
我会怎么做:只需使用nextLine()几次来跳过您不感兴趣的行。一旦到达包含第一个STID的第一行,nextLine()方法就会给出整行。STID似乎总是4个字符,所以您可以在行上使用substring(0,4)方法来仅获取所需的4个字符。一旦你有了它,你就可以将这个子串添加到你的ArrayList中。
发布于 2020-09-24 07:51:35
我采用了BufferedReader路线,并得出了以下结论:
import java.util.ArrayList;
import java.util.List;
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Mesonet {
public static void main(String[] args) {
try {
List<String> STIDS = new ArrayList<String>();
BufferedReader reader = new BufferedReader(
new FileReader("Mesonet.txt"));
Pattern p = Pattern.compile("^([A-Z0-9]{4}).*");
reader.readLine(); // repeat as necessary to skip headers...
while (reader.ready()) {
String line = reader.readLine();
Matcher m = p.matcher(line);
if (m.matches()) {
STIDS.add(m.group(1));
}
}
for (String STID : STIDS) {
System.out.println(STID);
}
}
catch (FileNotFoundException err) {
System.out.println("Where is the file?");
}
catch (IOException err) {
System.out.println("IO Problem");
}
}
}这将匹配前4个大写字母和数字组合,并将它们放入数组中,然后打印出来。
https://stackoverflow.com/questions/64035532
复制相似问题