首页 > 解决方案 > 在二维数组中查找一个字符串,然后转到相应的列

问题描述

所以我将 CSV 转换为数组。CSV 的第一列由描述该列内容的标题组成。在我的情况下:产品 ID | 产品名称 | 产品成本 | 数量

我正在尝试遍历数组,找到字符串item1,然后转到该项目的数量,它在同一行,但在不同的列中。

例如:

产品编号 | 产品名称 | 产品成本 | 数量

--001----- | ------项目1----- | --5.99----- | --3-----

--002----- | ------项目2----- | --2.99----- | --5-----

所以我想去这个数组,找到item1行索引1中的字符串,然后去列索引3将数量提取到一个变量中。然后我想存储到一个变量中以最终打印出来there are only 3 item1's left或类似的东西。

这是我到目前为止得到的:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class test2 {

    public static List<List<String>> csvToArray() {
        String fileName = "c:\\temp\\test.csv";
        File file = new File(fileName);

        // this gives you a 2-dimensional array of strings
        List<List<String>> lines = new ArrayList<>();
        Scanner inputStream;

        try {
            inputStream = new Scanner(file);

            while (inputStream.hasNext()) {
                String line = inputStream.next();
                String[] values = line.split(",");
                // this adds the currently parsed line to the 2-dimensional string array
                lines.add(Arrays.asList(values));
            }

            inputStream.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

        return lines;
    }

    public static void printArray(List<List<String>> lines){
        int lineNo = 1;
        for (List<String> line : lines) {
            int columnNo = 1;
            for (String value : line) {
                System.out.println("Line " + lineNo + " Column " + columnNo + ": " + value);
                columnNo++;
            }
            lineNo++;
        }
    }

    public static void main(String[] args) {
        csvToArray();
        printArray(csvToArray());
    }
}

如您所见,在该方法中,printArray我只是打印出 Array 以获取我所在位置的参考,但是一旦我尝试添加if's,我就会迷路。

任何帮助都会很棒:)

标签: javaarraysmultidimensional-array

解决方案


最好的解决方案是将每一行映射到一个“产品”对象。这个新闻类将包含产品ID、产品名称、产品成本和数量等属性。

一旦每行映射到一个产品对象,您只需找到具有所需产品名称的产品,然后您就可以轻松访问它的其他属性。


推荐阅读