Java 从CSV文件中读取数组
(编辑,更新代码) 我试图完成这个任务,从CSV文件中读取一个数组,并返回一个汽车数组列表。我通过了五个测试中的两个,但我认为我的问题是最后的“返回空值”。我不太确定我应该归还什么。我试着看了一遍我们的课堂讲稿,问了教授,他们都没有帮助。我不是在问答案,我只是需要被指向正确的方向 以下是我目前的代码:Java 从CSV文件中读取数组,java,arraylist,file-io,Java,Arraylist,File Io,(编辑,更新代码) 我试图完成这个任务,从CSV文件中读取一个数组,并返回一个汽车数组列表。我通过了五个测试中的两个,但我认为我的问题是最后的“返回空值”。我不太确定我应该归还什么。我试着看了一遍我们的课堂讲稿,问了教授,他们都没有帮助。我不是在问答案,我只是需要被指向正确的方向 以下是我目前的代码: import java.io.File; import java.io.FileNotFoundException; import java.util.ArrayList; import java
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;
/**
* Practice reading CSV files
*
* @author 250 Instructors
* @version Feb 2017
*
*/
public class CarsForSale {
/**
* Read an array from CSV file
*
* @param aFile
* - string pointing to file
* @return the array list of Cars; return null if error encountered
*/
public static ArrayList<Car> getCarsFromCSVFile(String aFile) {
ArrayList<Car> cars = new ArrayList<Car>();
File file = new File(aFile);
try {
Scanner scan = new Scanner(file);
while (scan.hasNext()) {
String car = scan.nextLine();
}
scan.close();
}
catch (FileNotFoundException e) {
System.out.println("Failed to open file " + aFile);
System.out.println(e);
return null;
}
return cars;
}
}
导入java.io.File;
导入java.io.FileNotFoundException;
导入java.util.ArrayList;
导入java.util.Scanner;
/**
*练习阅读CSV文件
*
*@author 250导师
*@2017年2月版
*
*/
公共类汽车轮换{
/**
*从CSV文件中读取数组
*
*@param aFile
*-指向文件的字符串
*@返回车辆数组列表,若出现错误返回null
*/
公共静态ArrayList getCarsFromCSVFile(字符串文件){
ArrayList cars=新的ArrayList();
文件=新文件(aFile);
试一试{
扫描仪扫描=新扫描仪(文件);
while(scan.hasNext()){
字符串car=scan.nextLine();
}
scan.close();
}
catch(filenotfounde异常){
System.out.println(“无法打开文件”+aFile);
系统输出打印ln(e);
返回null;
}
返回车辆;
}
}
JavaDoc评论说:
@返回车辆的数组列表;如果遇到错误,则返回null
如果您从catch块返回null
,并在方法末尾返回cars
,您将满足这些要求
try {
// read from file
}
catch (FileNotFoundException e) {
// handle exception
return null;
}
您可以阅读有关从catch块返回的更多信息。JavaDoc注释说: @返回车辆的数组列表;如果遇到错误,则返回null 如果您从catch块返回
null
,并在方法末尾返回cars
,您将满足这些要求
try {
// read from file
}
catch (FileNotFoundException e) {
// handle exception
return null;
}
您可以阅读有关从catch块返回的更多信息。主要问题是返回的内容和位置。JavaDoc说: @返回车辆的数组列表;如果遇到错误,则返回null 任何错误都应该被catch块捕获,这意味着您希望在catch块的末尾返回null(如果您曾经输入它) 要返回汽车的ArrayList,首先需要确保使用从文件中获得的输入创建汽车对象,然后将这些对象添加到ArrayList(而不是当前的字符串) 如果一切顺利,您应该在try块的末尾返回Car对象的ArrayList
try {
// read from file, create Car objects and add the objects to an ArrayList
return Cars;
}
catch (FileNotFoundException e) {
// handle exception
return null;
}
主要的问题是你要返回什么地方。JavaDoc说: @返回车辆的数组列表;如果遇到错误,则返回null 任何错误都应该被catch块捕获,这意味着您希望在catch块的末尾返回null(如果您曾经输入它) 要返回汽车的ArrayList,首先需要确保使用从文件中获得的输入创建汽车对象,然后将这些对象添加到ArrayList(而不是当前的字符串) 如果一切顺利,您应该在try块的末尾返回Car对象的ArrayList
try {
// read from file, create Car objects and add the objects to an ArrayList
return Cars;
}
catch (FileNotFoundException e) {
// handle exception
return null;
}
我认为您需要返回一个实际的数组列表,例如
returncars代码>如果您的代码成功。您的返回类型是ArrayList
而不是ArrayList
,因此您需要创建Car对象并将其添加到数组中,而不仅仅是创建一个字符串数组ArrayList cars=new ArrayList()
@sorifiend根据您在那之前的评论,我注意到我需要将ArrayList
更改为ArrayList
。这让我又通过了一个测试,现在它正朝着正确的方向发展代码>如果您的代码成功。您的返回类型是ArrayList
而不是ArrayList
,因此您需要创建Car对象并将其添加到数组中,而不仅仅是创建一个字符串数组ArrayList cars=new ArrayList()
@sorifiend根据您在那之前的评论,我注意到我需要将ArrayList
更改为ArrayList
。这让我又通过了一次测试,现在正朝着正确的方向前进。谢谢你。我意识到我的最后一个if语句是不必要的,于是我把它浓缩在了catch中。现在,我试图找出try
中的while循环。我知道car不是一个字符串,所以我需要更改它,但我在string car=scan.nextLine()方面遇到了问题代码>行。我编辑了它,现在它是Car=scan.nextLine()代码>但它不是字符串,所以有点不对劲。@BrandonBerry您没有显示的是Car类的外观,请更新您的问题以包含它,但是,它应该有一个方法来创建新的Car对象。例如Car Car=新车(scan.nextLine())代码>。下面是关于对象和类如何工作的官方java教程:@sorifiend我用当前的code@BrandonBerry我指的是Car
类(它将位于另一个名为Car
的类文件中,就像这样public-class-Car{…
)。该类应该有一个initilizer,它接受一个字符串来创建一个新的Car
对象。谢谢你。我意识到我的上一个if语句是不必要的,我在catch中压缩了它。现在我正试图找出try
中的while循环。我知道Car不是一个字符串,所以我需要更改它,但我有一个我对字符串car=scan.nextLine();
行有问题。我编辑了它,现在它是car-car=scan.nextLine();
,但它不是字符串,所以有点不对劲。@BrandonBerry您没有显示的是car类的样子,请更新y