Visual C#随机数文件编写器

时间:2017-09-14 19:07:31

标签: c#

    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。 而不是保存多个随机数,它只保存一个。 关于这两个问题的任何帮助都会很棒。

1 个答案:

答案 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();