private void btn_Save_Click(object sender, EventArgs e)
{
// Declare int variable.
int randomNumber = 0;
// Declare a StreamWriter variable.
StreamWriter outputFile;
// Get the number of random integers to hold in file.
int number = int.Parse(txt_Number.Text);
if (saveFile.ShowDialog() == DialogResult.OK)
{
// Create the selected file.
outputFile = File.CreateText(saveFile.FileName);
// Create a Random Object.
Random Rand = new Random();
for (int count = 0; count < number; count++)
{
// Get random integers and assign them to randomNumber.
randomNumber = Rand.Next(1, 101);
// Write data to the file.
outputFile.WriteLine(randomNumber);
// Close the file.
outputFile.Close();
MessageBox.Show("File saved in path:" + saveFile.FileName);
}
}
else
{
// Display an error message.
MessageBox.Show("Operation Cancelled");
}
}
private void btn_Clear_Click(object sender, EventArgs e)
{
// Clear the TextBox.
txt_Number.Text = "";
}
private void btn_Exit_Click(object sender, EventArgs e)
{
// Close the form.
this.Close();
}
}
问题是:创建一个程序,将一系列随机数写入文件。每个随机数应该在1到100的范围内。应用程序应该让用户指定文件将保留多少个随机数。
代码正在运行,但我输出的令牌有问题。 每次我运行程序时,都会说异常未处理,无法写入Closed TextWriter。 而不是保存多个随机数,它只保存一个。 关于这两个问题的任何帮助都会很棒。
答案 0 :(得分:-2)
您的错误出现在for循环中:
for (int count = 0; count < number; count++)
{
// Get random integers and assign them to randomNumber.
randomNumber = Rand.Next(1, 101);
// Write data to the file.
outputFile.WriteLine(randomNumber);
// Close the file.
outputFile.Close();
MessageBox.Show("File saved in path:" + saveFile.FileName);
}
在迭代所有数字之前关闭文件。因此,你不能写过第一个数字。 close函数应该在for循环之外,如下所示:
for (int count = 0; count < number; count++)
{
// Get random integers and assign them to randomNumber.
randomNumber = Rand.Next(1, 101);
// Write data to the file.
outputFile.WriteLine(randomNumber);
MessageBox.Show("File saved in path:" + saveFile.FileName);
}
// Close the file outside for loop
outputFile.Close();