【问题标题】:Java reading textfile and store each line to its own arrayJava读取文本文件并将每一行存储到自己的数组中
【发布时间】:2016-09-26 11:24:20
【问题描述】:

我正在尝试编写一个 java 程序,它逐行读取 texfile 并将每一行存储在自己的数组中,以便这些行将成为数据列。例如下面的data.txt文件有如下数据:

  • 122,80,100,119,162,90,136...
  • 122,80,100,119,162,90,136...
  • 64,74,70,64,76,62,84,78 ...
  • 正面、负面、负面 ...

我希望每一行都存储在自己的数组中,因此 4 行,4 个不同的数组,因为每行都属于特定的列。 我能够阅读文本文件。

BufferedReader br = new BufferedReader(new FileReader("C://data.txt"));
        ArrayList lines = new ArrayList();
        for(String line = br.readLine();line != null;line = br.readLine()) {
            line.replaceAll(",","\\.");
            String[] fields = line.split(" ");
            System.out.println(" " + fields[0]);
            lines.add(fields);
        }
        String[][] strings = (String[][]) lines.toArray(new String[lines.size()][]);
        System.out.println("Total Lines: " + strings.length);

这是预期的输出:

output

【问题讨论】:

  • 可以使用List of List(不是数组),更简单。
  • line 已经是一行,你把这个line 放在一个集合中,比如ArrayList<String>,然后你可以遍历那个集合
  • “合并在一起”是什么意思?你在哪里看到它合并在一起?我看到正在创建一个数组数组。您预计会发生什么,以及会发生什么?
  • edit您的问题并澄清您的问题描述。 BTW line.replaceAll(",","\\."); 在你的代码中没有做任何事情,除了创建你立即丢弃的字符串(因为字符串是不可变的,所以你不能编辑它们,但你可以将新的字符串实例分配给字符串变量)。也没有必要在 replaceAll 的替换部分中转义 .,实际上,由于您甚至不想使用正则表达式,所以根本不需要 replaceAll,请改用 replace
  • 另外我在你的data.txt 文件中看不到任何空格,所以split(" ") 真的没有意义。所以现在line.replaceAll(",","\\."); 问题使您的问题与"String not replacing characters" 重复,并且在空间上拆分看起来像错字问题(这在 Stack Overflow 上是题外话)。

标签: java bufferedreader readfile


【解决方案1】:

如果您想要特定数组中的每一行,那么以下内容应该会有所帮助

BufferedReader br = new BufferedReader(new FileReader("C:\\data.txt"));
ArrayList lines = new ArrayList();
for(String line = br.readLine();line != null;line = br.readLine()) {
    //comma will be replaced with .
    line=line.replaceAll(",","\\.");
    //each line will be stored in an array with . as separator
    String[] fields = line.split("\\.");
    //System.out.println(" " + fields[0]);
    lines.add(fields);
}
String[][] strings = (String[][]) lines.toArray(new String[lines.size()][]);
System.out.println("Total Lines: " + strings.length);

//code to display
for(String s[]:strings){
    for(String ss:s){
        System.out.print(ss+", ");
    }System.out.println();
}

它的输出

Total Lines: 4
122, 80, 100, 119, 162, 90, 136, 
122, 80, 100, 119, 162, 90, 136, 
64, 74, 70, 64, 76, 62, 84, 78 , 
positive, negative, negative , 

【讨论】:

    【解决方案2】:

    我认为这是你需要的:

            BufferedReader br = new BufferedReader(new FileReader("C://data.txt"));
            ArrayList<String[]> lines = new ArrayList<String[]>();
            for(String line = br.readLine();line != null;line = br.readLine()) {
                String[] fields = line.split(",");
                lines.add(fields);
            }
            System.out.println("Total Lines: " + lines.size());
            for(String[] lns:lines) {
                for (int i = 0; i < lns.length; i++) {
                    if (i == lns.length - 1) System.out.print(lns[i] + "\n"); else System.out.print(lns[i] + ", ");
                }
            }
    

    【讨论】:

      猜你喜欢
      • 2013-11-19
      • 2019-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-30
      • 1970-01-01
      • 2019-07-26
      相关资源
      最近更新 更多