Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从CSV文件中读取数组_Java_Arraylist_File Io - Fatal编程技术网

Java 从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

(编辑,更新代码) 我试图完成这个任务,从CSV文件中读取一个数组,并返回一个汽车数组列表。我通过了五个测试中的两个,但我认为我的问题是最后的“返回空值”。我不太确定我应该归还什么。我试着看了一遍我们的课堂讲稿,问了教授,他们都没有帮助。我不是在问答案,我只是需要被指向正确的方向

以下是我目前的代码:

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