使用文本文件中的数据

时间:2013-02-17 18:54:47

标签: java file-io

我正在研究Dijkstra算法的

This is the website,但边缘的数据是在程序内部创建的。我想要的是将数据作为文本文件,我已经制作了一个文本文件,并且能够逐行读取它。

但是我无法找到如何在程序中使用文本文件中的这些数据。有人能给我任何建议吗?

我的数据看起来像这样,正在创建图表

起点,终点,费用

2 3 1

2 4 1

2 5 2

2 6 2

3 1 1

3 2 1

3 4 1


这是我现在读取文件的代码,我可以打印出所有行或特定行,它读取arraylist中的数据。但我想做行拆分(String [] fields = line.split(“”);)是这样我可以在数据中打印出一个数字。但是当我把它放在代码中时,不允许我这样做,任何人都可以为我添加它。

文件文件=新文件(“data1.txt”);

    List<String> lines = new ArrayList<String>();

    try{
        Scanner scanner = new Scanner(file);

        while (scanner.hasNextLine()) {
            lines.add(scanner.nextLine());

        }
        scanner.close();

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

    for (int i = 0 ; i <lines.size(); i++){

        String getlines = lines.get(i);

    }

        System.out.print(lines.get(0)+"\n");

}

2 个答案:

答案 0 :(得分:1)

您可以使用以下代码阅读该文件:

    File file = new File("YOUR_FILE_PATH"); 
    try {
        Scanner scanner = new Scanner(file); 

        scanner.nextLine(); // to ignore the first line which has the header

        ArrayList<GraphNode> graphList = new ArrayList<GraphNode>();

        while (scanner.hasNextLine()) {
            String line = scanner.nextLine();
            String[] fields = line.split(" ");

            // Do something with these values
            graphList.add(new GraphNode(Integer.parseInt(fields[0]),
                                        Integer.parseInt(fields[1]),
                                        Integer.parseInt(fields[2]));

        }
        scanner.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

创建文件时,您应该保持一致,以创建分隔符,space,因为在您的示例中,标题由,分隔,而数据由space

您可以使用简单的类来保存数据,例如:

class GraphNode {
    private int start;
    private int end;
    private int cost;

    public GraphNode(int start, int end, int cost) {                
            this.start = start;
            this.end = end;
            this.cost = cost;
    }

    public int getStart() {
            return start;
    }

    public void setStart(int start) {
            this.start = start;
    }

    public int getEnd() {
            return end;
    }

    public void setEnd(int end) {
            this.end = end;
    }

    public int getCost() {
            return cost;
    }

    public void setCost(int cost) {
        this.cost = cost;
    }

}

答案 1 :(得分:0)

您可以使用循环将文本文件中的数据放入(在您的情况下)一种字符串数组/列表/适合您的目的。然后你可以用它们的索引fx抓住它们。和他们一起做数学。

如果要在之后将它们从字符串类型转换为数字类型,则使用parseInteger方法(fx,如果只处理整数)将它们转换为正确的数据类型。显然有一个parseFloat方法以及float类等等。

读完文件并将数据插入某种字符串数组后。我建议你使用循环将它们放在一个适当数据类型的新数组中,并使用解析方法进行转换。

之后,您可以从新数组中获取值,并使用它们进行数学运算,如果这是您需要的。