当前位置: 首页 > 知识库问答 >
问题:

从文本文件读取,但只存储特定部分

纪鸿禧
2023-03-14
File file;
            file = new File("CarInfo.txt");

            try (Scanner sc = new Scanner(file)) {
    while (sc.hasNext()) {
        String carTab = sc.next();
        // Looking for tag 'Car'
        if (!carTab.equals("Car:")) continue;

        if (!sc.hasNext()) {
            break;
        }

        String car = sc.next();
        if (!sc.hasNextInt()) {
            continue;
        }
        int x = sc.nextInt();
        if (!sc.hasNextInt()) {
            break;
        }
        int y = sc.nextInt();
        System.out.println(car + " " + x + " " + y);
    }



} catch (FileNotFoundException e) {
    System.out.println("File not found");
}

从代码(李克强)收到的错误:

Exception in thread "AWT-EventQueue-0" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:864)
    at java.util.Scanner.next(Scanner.java:1485)
    at java.util.Scanner.nextDouble(Scanner.java:2413)
    at traingui.code.TrainGui$1.run(TrainGui.java:37)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

共有1个答案

翟承志
2023-03-14

您可以为stations创建另一个对象,然后将每个stations对象存储在ArrayList中,该ArrayList中包含读取代码的文件:

站对象

public class Station {

    private String name;
    private ArrayList<Double> coords;

    public Station(String name, ArrayList<Double> coords){
        this.name = name;
        this.coords = coords;
    }

}

您的代码已修改

    File file = new File("StationInfo.txt");
    Scanner sc = new Scanner(file);
    ArrayList<Station> stationObj = new ArrayList<>();
    ArrayList<Double> temp = new ArrayList<>();
    String stationName = "";

    while (sc.hasNext()) {
        String token = sc.next();

        if (!token.trim().equalsIgnoreCase("Station:")) {     
            try{
                temp.add(Double.parseDouble(token));
            } catch (Exception e){
                stationName = token;
            }
        }

        // The below will work for when you have 1 coordinate or both coordinates.

        if(!stationName.equals("") && !stationName.equalsIgnoreCase("Station:") && !temp.isEmpty() && (!sc.hasNextDouble() || !sc.hasNextInt())){
            stationObj.add(new Station(stationName, temp));
            temp = new ArrayList<>();
            stationName = "";
        }

    }
 类似资料:
  • 问题内容: 有什么方法可以从文本文件中读取特定行?在API或Apache Commons中。就像是 : 我同意实现起来很简单,但是特别是当文件很大时,效率不是很高。 问题答案: 可以,但是仍然存在效率问题。 或者,您可以使用: 由于有缓冲,这将稍微更有效。 看一下并尝试跳过整行(使用正则表达式)。我无法确定它是否会更有效- 对其进行基准测试。 PS 代表 效率, 我的意思是 记忆效率

  • 问题内容: 我有一个文本文件,其中包含一个由数字组成的表格,例如: 5 10 6 6 20 1 7 30 4 8 40 3 9 23 1 4 13 6 例如,如果我想要仅包含在第二列中的数字,我该如何将该列提取到列表中? 问题答案: 您可以使用列表理解来做同样的事情 Docs 返回字符串的单词列表。如果不存在可选的第二个参数sep或“无”,则单词将由任意的空白字符字符串(空格,制表符,换行符,返回

  • 问题内容: 我需要在存储过程中读入由SSIS包创建的日志文件。 有什么好方法吗? 我尝试使用此代码,但将文件内容显示为乱码。有没有解决的编码问题?有没有更简单的方法? 问题答案: 您是否尝试过将笔直插入?例如:

  • 问题内容: 我正在尝试使用php从文本文件中读取特定行。这是文本文件: 我如何使用php获取第二行的内容?这将返回第一行: ..但我需要第二个。 任何帮助将不胜感激 问题答案: 文件—将整个文件读入数组

  • 问题内容: 有什么方法可以读取文本文件并将内容存储在Jtable中?我有一个文本文件,其中包含有关某些过程的某些信息。就像一个具有列和各自值的表。是否可以获取.txt文件的内容并以Jtable的形式显示?我正在使用Eclipse和Window Builder。任何帮助将不胜感激。谢谢! 问题答案: 我将研究Oracle的教程: 读/写文本文件 JTable教程 当从文本文件中获取数据时,您需要将其

  • 问题内容: 我们如何从文本文件读取数据并将其存储在String变量中? 是否有可能在方法中传递文件名,并且它将返回字符串,即文件中的文本。 我必须导入哪种工具?声明列表会很棒。 问题答案: 这些是必需的进口: 这是一种方法,通过将文件名作为参数传递给它,您可以从文件中进行读取,如下所示: