将值存储在 BufferedReader 的多维数组中

Store values in multidimensional array from BufferedReader

我有一个汽车租赁系统的任务,它要求程序从 CSV 文件中读取,其中包含每辆车及其规格。

我需要将这些值存储到一个数组中,因为我需要计算租用一辆车后还剩下多少辆车,以及计算每辆车列出的成本。

1,Mazda CX-9,7,Automatic,Premium,150
2,VW Golf,5,Automatic,Standard,59
3,Toyota Corolla,5,Automatic ,Premium,55
4,VW Tiguan,7,Automatic,Premium,110
5,Ford Falcon,5,Manual,Standard,60

到目前为止,我只能使用 line.split(",") 将每一列分配到一个一维数组中,这将输出索引 [0] 中的每个数字,索引 [1] 中的每个数字,等等.

如果我尝试 line.split("\n") 它会按索引 [0] 中的原样分配整个文件。

请告诉我最好的解决方法是什么。

我已经能够按照我想要的代码输出汽车,但我没有包含在此处。主要问题是如何适当地存储值。

public static void main(String[] args) throws FileNotFoundException, IOException {
    String path = "carlist.csv";
    String line = "";
    long lines = 0;

    BufferedReader br = new BufferedReader(new FileReader(path));
    while ((line = br.readLine()) != null) {
        lines++;
        String[] menu = line.split(",");
        System.out.println(menu[0]);
    }
}

comma拆分是正确的方法,你只需要将split函数返回的数组存储到ArrayList或Strings数组的数组中,就像这样:

public static void main(String[] args) throws FileNotFoundException, IOException {
    String path = "carlist.csv";
    String line = "";
    long lines = 0;
    
    BufferedReader br = new BufferedReader(new FileReader(path));
    ArrayList<String[]> list = new ArrayList<>();   
    while ((line = br.readLine()) != null) {
        lines++;
        list.add(line.split(","));     
        System.out.println(menu[0]);

    }
}

或者像这样:

public static void main(String[] args) throws FileNotFoundException, IOException {
    String path = "carlist.csv";
    String line = "";
    long lines = 0;
    
    BufferedReader br = new BufferedReader(new FileReader(path));
    String[][] cars = new String[100][6];  
    while ((line = br.readLine()) != null) {
        cars[lines++] = line.split(",");     
        System.out.println(menu[0]);

    }
}

在这里,我将100作为一个CSV文件中的最大记录数,6是数组的最大长度,用逗号分割后得到。这两个都可以根据您的用例进行修改。现在,您可以获得任何汽车及其特定元素,例如 cars[0][3] 或 list.get(0)[3],具体取决于您使用的实现方式。