首页 > 解决方案 > 连接列表到Java中的数组末尾

问题描述

我有这个代码:

public class Test3 {

public static void main(String[] args) throws IOException {
    List<String> answers = new ArrayList<>();
    answers.add("Yes");
    answers.add("No");
    try (BufferedReader br = new BufferedReader(new FileReader("D://new.csv"))) {
        String line;
        while ((line = br.readLine()) != null) {
            for (int i = 0; i < answers.size(); i++) {
                String[] sae = line.split(",");
                sae = Arrays.copyOf(sae, sae.length + 1);
                sae[sae.length - 1] = answers.get(i);
                System.out.println(Arrays.toString(sae));
            }

        }
    }
}

输出 是:

["something", "hello", Yes]
["something", "hello", No]
["abc", "bye", Yes]
["abc", "bye", No]

我正在读取一个 csv 文件并将其拆分。我正在连接一个list<string>直通 for 循环,但最后我得到了list<string>两次。我怎样才能防止它这样做?

我想要的输出是:

["something", "hello", Yes]
["abc", "bye", No]

标签: javaeclipselistcsvconcatenation

解决方案


您可以创建一个计数器并在每次读取一行时递增它,并且:

  • 如果您的 csv 中的行与答案中的行匹配:

    sae[sae.length - 1] = answers.get(counter);

  • 否则你可能想从头开始:

    sae[sae.length - 1] = answers.get(counter % answers.size());

删除你的for循环,你不需要它


推荐阅读