Java 如何使用嵌套for循环将数组值打印到CSV文件?

Java 如何使用嵌套for循环将数组值打印到CSV文件?,java,arrays,csv,Java,Arrays,Csv,我试图对我的问题进行一个简单的修复,将数组打印到.csv文件并替换某些字符,但后来我注意到,我不应该在输出中的逗号之前或之后使用任何空格。 我不能使用replace,否则所有的标题标签都将没有空格,所以我需要帮助直接从嵌套for循环获取值 import java.io.*; import java.util.Arrays; public class HW01 { public static void main(String args[]) throws IOException {

我试图对我的问题进行一个简单的修复,将数组打印到.csv文件并替换某些字符,但后来我注意到,我不应该在输出中的逗号之前或之后使用任何空格。
我不能使用replace,否则所有的标题标签都将没有空格,所以我需要帮助直接从嵌套for循环获取值

import java.io.*;
import java.util.Arrays;

public class HW01 {
    public static void main(String args[]) throws IOException {

        // Create a 1D array to hold header labels
        String headerLabels[] =  
            {"COURSE ID", "TEAM ID", "STUDENT FIRST NAME",
             "STUDENT LAST NAME", "STUDENT ID", "ASSIGNMENT ID",
             "DATE SUBMITTED", "TIME SUBMITTED", "SUBMITTED BY"
            };

        // Create a 2D array to hold header values
        String headerValues[][] =
            {
            {"CMPS280-02", "Invokers01", "James", "Brown", "w0479045", "H01", "8/25/2017", "1:14PM", "James Brown"},
            {"CMPS280-01", "Winners03", "Jacob", "Harley", "w0389342", "H03", "8/23/2017", "7:24PM", "Jacob Harley"},
            {"SE101-02", "CodeIt00", "Keith", "Dillinger", "w0782345", "S04", "8/25/2017", "1:23AM", "Keith Dillinger"}
            };

        // Create an int to hold number of students
        int students = headerValues.length;

        // Array loop to create student .csv files
        for (int i = 0; i < headerValues.length; i++){
            for (int j = 0; j < students; j++){

            // Create new .csv file and store in SUBMIT folder
            String path = "SUBMIT/"+headerValues[i][0]+"_"+headerValues[i][5]+"_"+headerValues[i][1]+"_"+headerValues[i][4]+".csv";
                File file = new File(path);
                PrintWriter writer = new PrintWriter(file);

                // Print headerLabels and headerValues for each student into .csv files
                writer.println(Arrays.toString(headerLabels).replace("[", "").replace("]", "").replace(" , " , ","));
                writer.println(Arrays.toString(headerValues[i]).replace("[", "").replace("]", "").replace("  ,  ", ","));
                writer.close();
            }
        }

    }
 }
import java.io.*;
导入java.util.array;
公共级HW01{
公共静态void main(字符串args[])引发IOException{
//创建一个1D数组以保存标题标签
字符串标题标签[]=
{“课程ID”、“团队ID”、“学生姓名”,
“学生姓氏”、“学生ID”、“作业ID”,
“提交日期”、“提交时间”、“提交人”
};
//创建二维数组以保存标题值
字符串头值[][]=
{
{“CMPS280-02”、“调用者01”、“詹姆斯”、“布朗”、“w0479045”、“H01”、“2017年8月25日”、“下午1:14”、“詹姆斯·布朗”},
{“CMPS280-01”、“Winners03”、“Jacob”、“Harley”、“w0389342”、“H03”、“8/23/2017”、“7:24PM”、“Jacob Harley”},
{“SE101-02”、“CodeIt00”、“Keith”、“Dillinger”、“w0782345”、“S04”、“8/25/2017”、“1:23AM”、“Keith Dillinger”}
};
//创建一个整数来容纳学生人数
int students=headerValues.length;
//数组循环以创建student.csv文件
for(int i=0;i
嵌套循环并不完全是问题所在。您尝试编写内容的顺序是。我想,您只需要为所有学生准备一个文件,而不是
I*j
文件。每个学生一个

比如说,

    // Create student .csv files and store in SUBMIT folder
    String path = "SUBMIT/students.csv";
    try (PrintWriter writer = new PrintWriter(new File(path))) {

        // Print header row
        writer.println(String.join(",", headerLabels));

        // Print all data rows
        for (String[] studentData : headerValues){
            writer.println(String.join(",", studentData);
        }
     }

首先,我可以告诉您,
Arrays.toString()
不是您想要做的。如果您想用逗号连接数组,请看,我很快就发现Arrays.toString()永远无法正确打印,但不是用逗号连接数组,我更喜欢使用嵌套for循环,我对打印数组元素而不是字符串本身的语法有点模糊。
string.join()
在内部使用循环。为什么要自己写呢?顺便说一句,我真的建议只使用ApacheCommonsCSV库。例如作者的JavaDoc这是我想做的,但如上所述,我必须使用循环来编写信息。您仍然将使用循环
for(String[]studentData:headerValues)
您可以编写自己的方法来替换
String.join
。思想仍然是一样的,嵌套循环可以抽象