2011-10-12 67 views
2

我在C#中寫矩陣

TextWriter tw = new StreamWriter("SQL_U.txt"); 
for (int j = 0; j < matrix.ColumnCount; j++) 
{ 
    for (int i = 0; i < matrix.RowCount; i++) 
    { 
     tw.WriteLine(U[i, j] + " "); 
    } 
} 
tw.Close(); 

但是這樣做讓

-0,233694952850896 
-0,150092222507639 
-0,208798702657929 
-0,231787481025756 
-0,174773485921403 
-0,0407654849559224 
0,221253448397395 
0,186510884928728 
0,260534246686463 
0,187890851164781 
0,0878923620975135 
0,234198798909221 
0,291676946994878 
0,327785825667529 
0,237572713217582 
-0,0860652250783251 
-0,0421504222854907 
-0,00555780603925644 

代替

-0,233694952850896 -0,150092222507639 -0,208798702657929 -0,231787481025756 
-0,174773485921403 -0,0407654849559224 ..... 

如何解決呢?

回答

7

使用Write而不是WriteLine來防止開始新行。然後在每行完成後插入一個新行。

using (TextWriter tw = new StreamWriter("SQL_U.txt")) 
{ 
    for (int j = 0; j < matrix.ColumnCount; j++) 
    { 
     for (int i = 0; i < matrix.RowCount; i++) 
     { 
      tw.Write(U[i, j] + " "); 
     } 
     tw.WriteLine(); 
    } 
} 

我也改變了你的代碼中使用using而不是調用Close,使作家的正確處理,即使有一個例外。

使用這種方法,你也在每行的末尾寫入一個額外的空間。如果這是一個問題,您可能需要稍微修改代碼以根據索引有條件地編寫此空間。

using (TextWriter tw = new StreamWriter("SQL_U.txt")) 
{ 
    for (int j = 0; j < matrix.ColumnCount; j++) 
    { 
     for (int i = 0; i < matrix.RowCount; i++) 
     { 
      if (i != 0) 
      { 
       tw.Write(" "); 
      } 
      tw.Write(U[i, j]); 
     } 
     tw.WriteLine(); 
    } 
} 
+0

這樣簡單,謝謝 – cMinor

0

這是因爲您使用WriteLine,不Write