c#利用循环在向文件里写字符的时候,为什么写不全呢?(小白提问QAQ))

??emm 2020-07-14 03:18:12
写了一段代码,向文本文件里写数字,然后应该是写22行,但是,只写到了20行就停止了。
请求大神解答

这是循环的代码:

for (int i = 0; i < sumx; i++)
{
for (int j = 0; j < sumy; j++)
{
grd1.Write(IFF[i, j]);
grd1.Write(" ");
}
grd1.Write('\n');
}


sumx=22
sumy=18
这样
实际上,就算把sumx改成数字22,也是只能读入20行...

完整的代码是这样的:


using System;
using System.IO;
using System.Collections.Generic;
using System.Windows.Forms;
namespace yantuo
{

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
int num1 = Convert.ToInt32(textBox2.Text);
int num2 = Convert.ToInt32(textBox3.Text);


double[,] gravity = new double[num1, num2];
double[,] FFcos = new double[num1, num2];
double[,] FFsin = new double[num1, num2];
double[,] FF = new double[num1, num2];
double[,] FFh = new double[num1, num2];
double[,] IFF = new double[num1, num2];
double[,] IFFcos = new double[num1, num2];
double[,] IFFsin = new double[num1, num2];
double[,] kk = new double[num1, num2];
double[,] uu = new double[num1, num2];
double[,] vv = new double[num1, num2];
int m = 0;

string sInFile = textBox1.Text;
using (StreamReader reader = new StreamReader(sInFile))
{
List<string[]> csvLists = new List<string[]>();
string line = reader.ReadLine();

while (line != null)
{
string[] values = line.Split(',');

for (int i = 0; i < values.Length; i++)
{
double num = double.Parse(values[i]);
gravity[m, i] = num;
}
m = m + 1;
line = reader.ReadLine();
}
}

for (int i = 0; i < gravity.GetLength(0); i++)
{
for (int j = 0; j < gravity.GetLength(1); j++)
{
for (int x = 0; x < gravity.GetLength(0); x++)
{
for (int y = 0; y < gravity.GetLength(1); y++)
{
FFcos[i, j] = FFcos[i, j] + gravity[x, y] * Math.Cos(2 * Math.PI * (Convert.ToDouble(i) * Convert.ToDouble(x) / Convert.ToDouble(num1) + Convert.ToDouble(j) * Convert.ToDouble(y) / Convert.ToDouble(num2)));
FFsin[i, j] = FFsin[i, j] + gravity[x, y] * Math.Sin(2 * Math.PI * (Convert.ToDouble(i) * Convert.ToDouble(x) / Convert.ToDouble(num1) + Convert.ToDouble(j) * Convert.ToDouble(y) / Convert.ToDouble(num2)));
FF[i, j] = Math.Pow((Math.Pow(FFcos[i, j],2) + Math.Pow(FFsin[i, j],2)),0.5);
}
}
}
}

for (int i = 0; i < FF.GetLength(0); i++)
{
for (int j = 0; j < FF.GetLength(1); j++)
{
uu[i, j] = i * Math.PI * 2 / num1;
vv[i, j] = j * Math.PI * 2 / num2;
kk[i,j]= Math.Pow((Math.Pow(uu[i, j], 2) + Math.Pow(vv[i, j], 2)), 0.5); //计算波数k
}
}

int dh = Convert.ToInt32(textBox4.Text); //设置延拓高度
if (comboBox1.Text == "down")
{
dh = -dh;
}
for (int i = 0; i < FF.GetLength(0); i++)
{
for (int j = 0; j < FF.GetLength(1); j++)
{
FFh[i, j] = Math.Exp(-dh*kk[i,j]) * FF[i, j]; //计算延拓后的傅里叶值FFh
}
}

for (int i = 0; i < FFh.GetLength(0); i++)
{
for (int j = 0; j < FFh.GetLength(1); j++)
{
for (int x = 0; x < FFh.GetLength(0); x++)
{
for (int y = 0; y < FFh.GetLength(1); y++)
{
IFFcos[i, j] = IFFcos[i, j] + (FFh[x, y] * Math.Cos(2 * Math.PI * (Convert.ToDouble(i) * Convert.ToDouble(x) / Convert.ToDouble(num1) + Convert.ToDouble(j) * Convert.ToDouble(y) / Convert.ToDouble(num2)))/ (Convert.ToDouble(num1) * Convert.ToDouble(num2)));
IFFsin[i, j] = IFFsin[i, j] + (FFh[x, y] * Math.Sin(2 * Math.PI * (Convert.ToDouble(i) * Convert.ToDouble(x) / Convert.ToDouble(num1) + Convert.ToDouble(j) * Convert.ToDouble(y) / Convert.ToDouble(num2))) / (Convert.ToDouble(num1) * Convert.ToDouble(num2)));
IFF[i, j] = Math.Pow((Math.Pow(IFFcos[i, j], 2) + Math.Pow(IFFsin[i, j], 2)), 0.5);
}
}
}
}

FileStream aFile = new FileStream(textBox5.Text, FileMode.OpenOrCreate);
StreamWriter ver = new StreamWriter(aFile);//在这导出数据

for (int i = 0; i < gravity.GetLength(0); i++)
{
for (int j = 0; j < gravity.GetLength(1); j++)
{
if (gravity[i, j] != 0)
{
ver.Write(IFF[i, j]);
ver.Write(',');
}
}
if (gravity[i, 1] != 0 && gravity[i, 2] != 0 && gravity[i, 3] != 0)
ver.Write('\n');
}
ver.Close();
textBox6.Text = "Complete";
FileStream cFile = new FileStream(textBox7.Text, FileMode.OpenOrCreate);

StreamWriter grd = new StreamWriter(cFile);//在这导出数据
//写入第一行
string f ="ID,type,value,ORIG_FID,point_x,point_y";
grd.Write(f);
grd.Write('\n');
int k = 1;
for (int i = 0; i < gravity.GetLength(0); i++)
{
for (int j = 0; j < gravity.GetLength(1); j++)
{
if (gravity[i, j] != 0)
{
grd.Write(k);
k = k + 1;
grd.Write(',');
grd.Write("point");
grd.Write(',');
grd.Write(IFF[i, j]);
grd.Write(',');
grd.Write('0');
grd.Write(',');
grd.Write(i+1);
grd.Write(',');
grd.Write(j+1);
grd.Write('\n');
}

}
//if (gravity[i, 1] != 0 && gravity[i, 2] != 0 && gravity[i, 3] != 0)
// grd.Write('\n');
}
FileStream grdFile = new FileStream(textBox8.Text, FileMode.OpenOrCreate);

StreamWriter grd1 = new StreamWriter(grdFile);//在这导出数据
string f1 = "DSAA";
grd1.Write(f1);
grd1.Write('\n');
int sumx = 0;
int sumy = 0;
for (int i = 0; i < gravity.GetLength(0); i++)
{
if (gravity[i, 0] != 0)
{
sumx = sumx + 1;//21
}
}
for (int i = 0; i < gravity.GetLength(1); i++)
{
if (gravity[0, i] != 0)
{
sumy = sumy + 1; //18
}
}

grd1.Write(sumx + " " + sumy);
grd1.Write('\n');
grd1.Write("1 " + sumx);//1 21
grd1.Write('\n');
grd1.Write("1 " + sumy); //1 18
grd1.Write('\n');
double min = 10000000;
double max = -99999999;
for (int i = 0; i < IFF.GetLength(0); i++)
{
for (int j = 0; j < IFF.GetLength(1); j++)
{
if (IFF[i, j] < min)
{
min = IFF[i, j];
}
if (IFF[i, j] > max)
{
max = IFF[i, j];
}
}
}

grd1.Write(min + " " + max);
grd1.Write('\n');

for (int i = 0; i < sumx; i++)
{
for (int j = 0; j < sumy; j++)
{
grd1.Write(IFF[i, j]);
grd1.Write(" ");
}
grd1.Write('\n');
}

}

private void button2_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.InitialDirectory = "c:\\";//注意这里写路径时要用c:\\而不是c:\
openFileDialog.Filter = "*.csv|*.csv";
openFileDialog.RestoreDirectory = true;
openFileDialog.FilterIndex = 1;
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
string fName = openFileDialog.FileName;
textBox1.Text = fName;
}
}

private void button3_Click(object sender, EventArgs e)
{
SaveFileDialog SaveFileDialog = new SaveFileDialog();
SaveFileDialog.InitialDirectory = "c:\\";//注意这里写路径时要用c:\\而不是c:\
SaveFileDialog.Filter = "*.csv|*.csv";
SaveFileDialog.RestoreDirectory = true;
SaveFileDialog.FilterIndex = 1;
if (SaveFileDialog.ShowDialog() == DialogResult.OK)
{
string fName1 = SaveFileDialog.FileName;
textBox5.Text = fName1;
}
}



...全文
87 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
??emm 2020-07-14
  • 打赏
  • 举报
回复
引用 1 楼 datafansbj 的回复:
作为写入的流,在操作完成后,应调用 Flush 方法,以保证缓冲区的数据全部写入完成。
感谢感谢!!已经解决啦!!
datafansbj 2020-07-14
  • 打赏
  • 举报
回复
作为写入的流,在操作完成后,应调用 Flush 方法,以保证缓冲区的数据全部写入完成。

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧