阅读&将多列文本文件拆分为数组

时间:2017-07-09 18:30:29

标签: java arrays split java.util.scanner readfile

对于一个项目,我正在研究一个包含多达14个数据参数的相当大的动物数据集。我能够读取它并使用它将其显示为字符串:

public static void readIn(String file) throws IOException {

    Scanner scanner = new Scanner(new File(file));
    while (scanner.hasNext()) {
        String[] columns = scanner.nextLine().split("/t");
        String data = columns[columns.length-1];
        System.out.println(data);
    }
}

并显示如下内容:

04:00:01    0.11    0.04    -0.1    1047470 977.91  91.75
04:00:01    0.32    -0.03   -0.07   1047505 977.34  92.91
04:00:01    0.49    -0.03   -0.08   1047493 978.66  92.17

但是我目前在尝试将每个列拆分成单独的数组时遇到了麻烦,因此我可以处理数据(例如计算方法)。知道如何做到这一点?任何帮助将不胜感激。

编辑:谢谢,我发现了一个有效的解决方案,也让我选择了具体读取的频道。我还决定将数据作为数组存储在课堂中,这就是我现在所拥有的:

public static void readChannel(String file, int channel) throws IOException 
{
    List<Double> dataArr = new ArrayList<>();
    Scanner scanner = new Scanner(new File(file));
    while (scanner.hasNext()) {
        String[] columns = scanner.nextLine().split("\t");

        for (int i = channel; i < columns.length; i+=(columns.length-channel)) {
            dataArr.add(Double.parseDouble(columns[i]));
            dataArr.toArray();
        }
    }
}

3 个答案:

答案 0 :(得分:0)

您可以将所有行存储在ArrayList中,然后为每个列创建数组并在其中存储值。示例代码:

Scanner scanner = new Scanner(new File(file));
ArrayList<String> animalData = new ArrayList<String>();
while (scanner.hasNext()) {
    String[] columns = scanner.nextLine().split("/t");
    String data = columns[columns.length-1];
    animalData.add(data);
    System.out.println(data);
}

int size = animalData.size();
String[] arr1 = new String[size]; String[] arr2 = new String[size]; 
String[] arr3 = new String[size]; String[] arr4 = new String[size];
for(int i=0;i<size;i++)
{
    String[] temp = animalData.get(i).split("\t");
    arr1[i] = temp[0];
    arr2[i] = temp[1];
    arr3[i] = temp[2];
    arr4[i] = temp[3];
}

答案 1 :(得分:0)

我认为你应该将问题分成2:

  1. 文件阅读:

    您的程序读取每一行并将其保存在您定义的类的实例中:

    int sum = 0;
    for ( MyData md : myList ) {
        sum = sum + md.getValue();
    }
    
  2. 数据处理:

    处理完文件后,您可以创建处理数据所需的方法:

    $('#nav ul li a').click(function () {
        $('html, body').animate({
            scrollTop: $("#myDiv").offset().top
        }, 2000);
    });
    
  3. 我希望它有所帮助。

答案 2 :(得分:0)

以下代码段将列出给定索引的所有值

views/index.pug