我有两个 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/