寫了一段代碼,向文本檔案里寫數字,然后應該是寫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;
}
}
uj5u.com熱心網友回復:
作為寫入的流,在操作完成后,應呼叫 Flush 方法,以保證緩沖區的資料全部寫入完成。uj5u.com熱心網友回復:
感謝感謝!!已經解決啦!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/22810.html
標籤:C#
