在C#中的文本文件中写入矩阵

时间:2011-10-12 18:06:47

标签: c# text-files

我在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 .....

如何解决?

2 个答案:

答案 0 :(得分: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();
    }
}

答案 1 :(得分:0)

这是因为您使用的是WriteLine,而不是Write