2015-11-07 127 views
0

我有一個任務,它涉及將數組值(寫入)傳遞給Java中的文本(.txt)文件。這是我第一次使用BufferedWriter,我已經試過if語句的不少變體,但看不到我的程序以matrix[i][j] + ","的格式寫入,直到它碰到最後一列索引並寫入而沒有後的逗號整數。將多維數組寫入文本文件文件

我試過使用append()方法BufferedWriter擴展但我不認爲我正確使用它。

目前代碼

void writeMatrix(String filename, int[][] matrix) { 
    try { 
     BufferedWriter bw = new BufferedWriter(new FileWriter(filename)); 

     for (int i = 0; i < matrix.length; i++) { 
      for (int j = 0; j < matrix[i].length; j++) { 
        bw.write(matrix[i][j] + ","); 
      } 
      bw.newLine(); 
     } 
     bw.flush(); 
    } catch (IOException e) {} 
} 

電流輸出

1,2,3, 
4,5,6, 
7,8,9, 

我需要每一行最後一個數字不包括逗號BufferedWriter顯然不喜歡加兩個write()方法一起放在同一行上。那麼我怎麼能做到這一點?

+0

「將數組傳遞給txt文件」的措辭很尷尬。傳遞是指將值或引用(通常是駐留在內存中的數據結構)傳遞給另一個進程或例程,例如。傳遞參數。您不會將數據結構「傳遞」到持久性存儲區(如文件)。 – scottb

回答

1

您可以將最裏面for循環改成這樣:

for (int j = 0; j < matrix[i].length; j++) { 
    bw.write(matrix[i][j] + ((j == matrix[i].length-1) ? "" : ",")); 
} 

這使得一個簡單的三元運營商在做這個:

ifj是最後一個索引:

  • 什麼都不打印(

else

  • 打印逗號(,

根據要求,這將是相當於這個if-else聲明:

for (int j = 0; j < matrix[i].length; j++) { 
    if(j == matrix[i].length-1) { 
     bw.write(matrix[i][j]); 
    } else { 
     bw.write(matrix[i][j] + ","); 
    } 
} 
+0

工作!但我不確定我是否理解問號和冒號背後的語法,我以前沒見過它們用過? –

+0

它本質上是一個縮短的'if-else'語句。我會給你一個更簡單的選擇。 –

+0

歡迎來到SO社區(別擔心,你的文章格式化)!我很高興我的幫助(不要忘記接受),祝你有美好的一天! –

0

將矩陣[i] .length與j進行比較,然後確定是否打印「,」或不。

0

您只需簡單地添加一個if-else語句來決定是否打印逗號。

希望得到這個幫助!

0

您可以嘗試在迭代中添加if語句。如果j位於最後一列,它不會將逗號打印到您的文件,否則它會。

void writeMatrix(String filename, int[][] matrix) { 
    try { 
     BufferedWriter bw = new BufferedWriter(new FileWriter(filename)); 

     for (int i = 0; i < matrix.length; i++) { 
      for (int j = 0; j < matrix[i].length; j++) { 
       if(j == matrix[i].length - 1){  
        bw.write(matrix[i][j]); 
       } else{ 
        bw.write(matrix[i][j] + ","); 
       }   
      } 
      bw.newLine(); 
     } 
     bw.flush(); 
    } catch (IOException e) { 
     //why does the catch need its own curly? 
    } 
} 

希望它的作品!