问题描述
我是Java新手,我需要一些帮助
I'm a java newbie and I need a some help
所以这是我的主要方法:
so here is my main method:
RegistrationMethods dmv = new RegistrationMethods();
ArrayList<CarOwner> ItState = new ArrayList<CarOwner>();
dmv.processTextToArrayList(ItState);
,我有一个名为CarOwner
的类,它具有用于firstName, lastName, license, month, year
实例变量的获取器和设置器.
and I have a class called CarOwner
and it has getters and setters for firstName, lastName, license, month, year
instance variables.
这是我的processTextToArrayList
方法的方法头:
And this is my method header for processTextToArrayList
method:
public void processTextToArrayList(ArrayList<CarOwner> inList) throws IOException
该方法应该将新的CarOwner
对象添加到传入的inList CarOwner
集合中.对于csv文件的每一行,都会在inList
中添加一个CarOwner
对象.
this method is supposed to add new CarOwner
objects to the inList CarOwner
collection passed in. For each line of the csv file, a CarOwner
object is added to inList
.
我必须从csv文件读取到arraylist我的csv文件包含以下内容:
I have to read from csv file into arraylistmy csv file contains something like:
Bunny Bugs ACB-123 5 2013
Bunny Honey DEF-456 9 2013
Bunny Lola GHI-789 3 2014
如何使用while循环对此进行编码?
how do I code this using while loop?
我的CarOwner类是:
my CarOwner class is :
public class CarOwner extends Citizen implements CarOwnerInterface, Serializable
{
private String license;
private int month, year;
public CarOwner()
{
super();
license = "Not Assigned";
month = 0;
year = 0;
}
public CarOwner(String inFirst, String inLast, String inLicense, int inMonth, int inYear)
{
super(inFirst, inLast);
license = inLicense;
month = inMonth;
year = inYear;
}
public void setLicense(String inLicense)
{
license = inLicense;
}
public String getLicense()
{
return license;
}
public void setMonth(int inMonth)
{
month = inMonth;
}
public int getMonth()
{
return month;
}
public void setYear(int inYear)
{
year = inYear;
}
public int getYear()
{
return year;
}
public int compareTo(Object o)
{
if ((o != null ) && (o instanceof CarOwner))
{
CarOwner otherOwner = (CarOwner) o;
if (otherOwner.compareTo(getYear()) > 0)
return -1;
else if (otherOwner.compareTo(getYear()) < 0)
return 1;
else if (otherOwner.equals(getYear()))
if (otherOwner.compareTo(getMonth()) > 0)
return -1;
else if (otherOwner.compareTo(getMonth()) < 0)
return 1;
else if (otherOwner.equals(getMonth()))
return 0;
}
return -1;
}
}
我的公民班也是:
public class Citizen implements CitizenInterface, Serializable
{
private String firstName, lastName;
public Citizen()
{
firstName = "No Name";
lastName = "No Name";
}
public Citizen(String inFirstName, String inLastName)
{
firstName = inFirstName;
lastName = inLastName;
}
public void setFirstName(String inFirst)
{
firstName = inFirst;
}
public String getFirstName()
{
return firstName;
}
public void setLastName(String inLast)
{
lastName = inLast;
}
public String getLastName()
{
return lastName;
}
public String toString()
{
String str;
str = firstName + " " + lastName;
return str;
}
推荐答案
您可以使用类似的方法,并提供要从中读取文件的路径.这将创建一个扫描程序以读取传入的文件.
You could use a method like this and provide the path to the file you wish to read from.This creates a Scanner to read from the file passed in.
它一次抓取每一行,并向结果数组添加一个新的CarOwner(String,String,String,String,String)对象.
It grabs each line one at a time and adds a new CarOwner(String,String,String,String,String) object to the result array.
P.S.我不知道您对CarOwner的实现,所以我只使用了所有Strings ...我会留给您找出答案.
P.S. i have no idea your implementation of CarOwner so i just used all Strings... I'll leave that to you to figure out heh.
public ArrayList < CarOwner > processTextToCarOwnerList(String filePath) throws IOException {
ArrayList < CarOwner > result = new ArrayList < CarOwner > ();
Scanner scan = new Scanner(new File(filePath));
while (scan.hasNextLine()) {
String line = scan.nextLine();
String[] lineArray = line.split(" ");
result.add(new CarOwner(lineArray[0], lineArray[1], lineArray[2], lineArray[3], lineArray[4]));
}
return result;
}
这篇关于Java从csv文件读取并将其信息存储到ArrayList< class>中.的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!