2017-08-27 10 views
0

私のコードは大部分は正しく動作し、正しいファイル名の "SUBMIT"フォルダに3つの.csvファイルを印刷することができますが、それぞれの末尾にカンマを取り除く方法はわかりませんまた、カンマの前後に空白を入れずに、同じカンマ区切りの方法でテキストファイルの2行目にheaderValuesを書き込む方法もわかりません。私は、2D配列からネストされたforループを使って.csvファイルに書き込む必要があることに注意することが重要です。ヘッダの1と値のための1 -2D配列をJavaのテキストファイルに正しく印刷するにはどうすればよいですか?

import java.io.*; 

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-01", "Winners03", "Jacob", "Harley", "w0389342", "H03", "8/23/2017", "7:24PM", "Jacob Harley"}, 
      {"CMPS280-02", "Invokers01", "James", "Brown", "w0479045", "H01", "8/25/2017", "1:14PM", "James Brown"}, 
      {"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; 

     // Loop to name .csv files 
     for (int i = 0; i < students; i++){ 

      // 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 using loops 
      for (int j = 0; j < headerValues[i].length; j++){ 
       writer.print(headerLabels[j] + ","); 
       writer.print(headerValues[i][j] + ","); 
      } 
       writer.close(); 
     } 

    } 
} 
+0

これまでに何を試みましたか?シンプルな 'if文 'がそのトリックをしないだろうか? – clabe45

+0

いいえ、最初のif文を作成した後、次のループを使用するために、テキストファイルの1行だけを下に移動するにはどうすればいいですか? – simplest

答えて

0

あなたは2つの別々のループにあなたの最終forループを分割する必要があります。コンマの問題は、インデックスjが最後のインデックス値よりも小さい場合にのみ印刷することで修正できます。

for (int j = 0; j < headerLabels[i].length; j++){ 
    writer.print(headerLabels[j]); 
    if(j<headerLabels[i].length-1) writer.print(","); 
} 
writer.println(); 

for (int j = 0; j < headerValues[i].length; j++){ 
    writer.print(headerValues[i][j]); 
    if(j<headerValues[i].length-1) writer.print(","); 
} 
writer.println(); 
+0

テキストファイルの1行にすべて印刷しますが、headerValues [私は[j]すべての2行目に – simplest

+0

申し訳ありません、もちろん。各出力行の後に改行を出力する必要があります。私は答えを更新しました。 – SirRaffleBuffle

関連する問題