java - 并排打印 csv 中的两个数组

标签 java arrays csv for-loop foreach

我有两个 String 数组:句子和分数。

我想创建一个 .csv 文件,其中第一列由句子中的元素组成,第二列由分数中的元素组成。

我无法理解代码中的问题所在以及如何修复它。

import java.io.File;
import java.io.PrintWriter;

public class GeneraCsv {
    public static void main(String[] args) throws Exception {
        String[] sentence = {"sentence 1", "sentence 2", "sentence 3"};
        String[] score = {"score 1", "score", "score 3"};
        PrintWriter pw = new PrintWriter(new File("C:/Users/Gonzalo/Desktop/test.csv"));
        StringBuilder sb = new StringBuilder();
        sb.append("sentence");
        sb.append(';');
        sb.append("score");
        sb.append('\n');
        for(String a: sentence) {
            sb.append(a);
            sb.append(";");
            for(String b: score) {
                sb.append(b);
                sb.append('\n');
                break;
            }
        }
        pw.write(sb.toString());
        pw.close();
        System.out.println("done!");
    }
}

我的代码生成此:

sentence; score
sentence 1; score 1
sentence 2; score 1
sentence 3; score 1

第一列很好,第二列不行。

我想要的输出应该是这样的:

sentence; score
sentence 1; score 1
sentence 2; score 2
sentence 3; score 3

我确信某个地方的循环有问题。

如何解决?

最佳答案

问题

您始终在内循环中使用分数的第一个输入

for(String a: sentence) { 
            sb.append(a); // this will iterate the sentence array in sequential order
            sb.append(";");

            for(String b: score) {
              // this will always pick score 1 because there will be only one iteration due to break
                sb.append(b);
                sb.append('\n');
                break; // stop the loop after first iteration
            }
        }

所以用这个

1.) 使用索引根据数组长度迭代数组

2.) 使用索引访问数据并将其附加到您的 StringBuilder

    for(int i=0;i <score.length;i++) {

        sb.append(sentence[i]);
        sb.append(";");

        sb.append(score[i]);
        sb.append('\n');                
        //System.out.print(sb.toString()); to print values 
        //sb =new StringBuilder();
    }
    pw.write(sb.toString());
    pw.close();

注意:用这个单个循环替换两个循环

输出:

sentence 1;score 1    
sentence 2;score    
sentence 3;score 3

关于java - 并排打印 csv 中的两个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41407702/

相关文章:

java - Spring JPA多对多关系无法获取数据

java - 是否需要覆盖注解 - Kotlin

python - 如何设置具有给定列表位置的嵌套 python 字典的 "nth"元素?

C++通过引用其他类传递二维数组

python - 如何使用 python 在 zip 中打开 zip 中的 csv?

java - Tomcat 将另一个 xml 文件包含到 web.xml

java - Libgdx如何计算运行时间

c++ - = 运算符是否在 C++ 中调用构造函数/new?

dom - 在 HTML 中嵌入 csv 以与 D3.js 一起使用

matlab - 用 MATLAB 读取 CSV 文件?