【发布时间】:2014-02-15 23:46:25
【问题描述】:
我有一些从 csv 文件中读取的代码,该文件中包含很多人的姓氏、名字和出生年份。在 csv 文件中是这样的:
nameLast nameFirst birthYear
Santos Valerio 1972
Tekulve Kent 1947
Valentine Fred 1935
我有一个类叫 Human,human 类也有这三个值。我想创建一个人类类的数组,并将 csv 文件中的所有数据传递给它。这样,如果 [0] 处的数组的第一个实例将在其中包含三个值,两个用于名称,一个用于年份。这是我到目前为止的代码:
package testing.csv.files;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Human {
String lastName;
String firstName;
String birthYear;
public static void main(String[] args) {
//.csv comma separated values
String fileName = "C:/Users/Owner/Desktop/Data.csv";
File file = new File(fileName); // TODO: read about File Names
try {
Scanner inputStream = new Scanner(file);
inputStream.next(); //Ignore first line of titles
while (inputStream.hasNext()){
String data = inputStream.next(); // gets a whole line
String[] values = data.split(",");
System.out.println(values[2]);
}
inputStream.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
我这里的内容目前将打印出所有的出生年份,因为 values[2] 是出生年份。我以为我可以换行
String[] values = data.split(",");
阅读
Human[] values = data.split(",");
然后它会自动将值 lastName、firstName 和birthyear 分配到数组中每个对象的正确位置。但是,这样做只会产生错误消息
incompatible types: String[] cannot be converted to Human[]
我也尝试将上面的行从
String data = inputStream.next(); // gets a whole line
到
Human data = inputStream.next(); // gets a whole line
但我收到相同的错误消息。
那我做错了什么?也许我没有像我想的那样正确定义类,或者我的方法有什么问题?请让我知道你的想法。
【问题讨论】:
标签: java arrays class object csv