gpt4 book ai didi

java - 使用java解析csv文件

转载 作者:行者123 更新时间:2023-12-02 04:35:12 29 4
gpt4 key购买 nike

我是 Java 的初学者,我正在尝试垂直提取这些值并将它们及其引用存储在数据类型中。因此“A”将映射到 1,8,7,6,并且前面的日期也将被排除。 csv 文件如下。

10/1/14, A,B,C,D,E,F,G,H

10/2/14, 1,2,3,4,5,6,7,8

10/3/14, 8,1,2,3,4,5,6,7

10/4/14, 7,8,1,2,3,4,5,6

10/5/14, 6,7,8,1,2,3,4,5

这是我的代码。到目前为止,我已经能够单独获取行,但我不知道如何将它们添加到数据结构中。这将返回 >> C3218

    class Main {
public static void main(String[] args) {
Read r = new Read();
r.openFile();
r.readFile();
r.closeFile();

}
}

import java.io.*;
import java.util.*;
public class Read {

private Scanner x;
public void openFile() {
try {
x = new Scanner(new File("test.csv"));
}
catch(Exception e){
System.out.println("could not find file");
}

}
public void readFile() {
while(x.hasNext()){
String a = x.next();
String[] values = a.split(",");
System.out.printf(values[3]); // gets line
}
}
public void closeFile() {
x.close();
}
}

最佳答案

Java 是 Object Oriented编程语言。我假设您所说的“数据结构”是 Java 术语中的对象。例如(这些只是示例,不是您专门可以用于您的情况的东西),如果我想代表一个人,我可能有这样的东西

public interface Person{
String getName();
Date getBirthDate();
}

public class GenericPerson implements Person{
private final String name;
private final Date bdate;

public GenericPerson(String fullName, Date birthdate){
name = fullName;
bdate = birthdate;
}

@Override
public String getName() {
return name;
}

@Override
public Date getBirthDate() {
return bdate;
}
}

相当稀疏,但我只是想展示一些基本概念。

你问了

I don't know how to add them to a data structure.

在我的示例中,您将实例化一个 GenericPerson

Person p = new GenericPerson(name,date);

当然,您需要namedate 变量。这就是解析文件的地方。所以如果我有一个以下形式的文件

George Costanza,5/4/1956Cosmo Kramer,12/12/1960Jerry Seinfeld,1/2/1959

Then in my code to parse the file I might have

String line = scanner.next();
String[] values = line.split(",");
Person p = new GenericPerson(values[0],getDateFormatter().parse(values[1]));

因此,您创建了 Object 类型,定义了您希望它具有哪些字段。然后通过构造函数或设置方法填充它们。 setter 方法的一个示例是,如果我像这样修改 GenericPerson

public class GenericPerson implements Person{
private String name;
private Date bdate;

public void setName(String n){
name = n;
}

public void setBirthDate(Date d){
bdate = d;
}

@Override
public String getName() {
return name;
}

@Override
public Date getBirthDate() {
return bdate;
}
}

现在我需要调用它们来设置对象中的值。

对于您的情况,您需要定义数据要定义的一些Object类型。该类型将具有诸如 GenericPerson 之类的字段,并且您需要具有 setter 方法或采用与字段对应的参数的构造函数。

我强烈建议遵循 online tutorial对于java初学者。

关于java - 使用java解析csv文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30919461/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com