【问题标题】:ints into text file整数到文本文件
【发布时间】:2020-09-09 15:08:46
【问题描述】:

我尝试在文本文件中生成 4 个 4 位数的随机数,但我唯一可以输入的只是引号中的文本。您还需要在文本框中输入地址,但这没关系。如何在该文件中键入多个整数?这是我尝试这样做的方法。

private void btnGenerate_Click(object sender, EventArgs e)
{
    int i;
    i = textboxMAIL.Text.Length;
    if (i < 1)
    {
        MessageBox.Show("No address!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
    else
    {
        MessageBox.Show("Successfully saved into psc.txt.", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
        Random r;
        r = new Random();
        int generate;
        generate = r.Next(9999); 

        Random r2;
        r2 = new Random();
        int generate2;
        generate2 = r2.Next(9999); 

        Random r3;
        r3 = new Random();
        int generate3;
        generate3 = r3.Next(9999); 

        Random r4;
        r4 = new Random();
        int generate4;
        generate4 = r4.Next(9999); 

        if (!File.Exists("c://desktop//psc.txt")) // If file does not exists
        {
            File.Create("c://desktop//psc.txt").Close(); // Create file
            using (StreamWriter sw = File.AppendText("c://desktop//psc.txt"))
            {
                sw.WriteLine(generate, generate2, generate3, generate4); // Write text to .txt file
            }
        }
        else // If file already exists
        {
            File.WriteAllText("c://desktop//psc.txt", String.Empty); // Clear file
            using (StreamWriter sw = File.AppendText("c://desktop//psc.txt"))
            {
                sw.WriteLine(generate, generate2, generate3, generate4); // Write text to .txt file
            }
        }
    }
}

【问题讨论】:

  • 总是实例化 new Random() 是错误的。
  • “但我唯一可以输入的只是引号中的文本” - 您第二次使用 sw.WriteLine 确实只是引号中的文本。将其与您的第一次使用进行比较。
  • 旁注:在您执行该操作之前显示一条操作成功的消息只是自找麻烦。
  • @p0150n:既然你已经纠正了那个错字,现在是时候重新测试你的代码了。它仍然以某种方式失败吗?有什么新问题?
  • @p0150n:因为您尝试使用 int 值,而方法需要 string 值。始终检查您尝试使用的方法的文档:docs.microsoft.com/en-us/dotnet/api/…

标签: c# winforms int


【解决方案1】:

检查the documentation for StreamWriter.WriteLine。您正在向它传递 4 个 int 值,但没有该方法的版本可以预期。该方法的第一个参数是要写入的字符串

如果你想将每个值写在自己的行上,请将每个值转换为字符串并将其传递给方法:

sw.WriteLine(generate.ToString());
sw.WriteLine(generate2.ToString());
sw.WriteLine(generate3.ToString());
sw.WriteLine(generate4.ToString());

如果您希望它们全部连接到同一行,第一个参数是带有格式占位符的字符串,其余参数是占位符的值:

sw.WriteLine("{0}{1}{2}{3}", generate, generate2, generate3, generate4);

或者使用更现代的语法,如果您使用的是更新的 C# 版本:

sw.WriteLine($"{generate}{generate2}{generate3}{generate4}");

还值得注意的是,您的随机数生成已损坏。您拥有的代码很可能每次都会产生 4 个相同的随机数。有关详细信息,请参阅this question。简而言之,您应该使用Random一个 实例并使用它来生成您需要的所有数字。

【讨论】:

  • 嗯。我使用了最后一个,我看到“8204”重复了 4 次。我将使用第一个,因为第二个可能与最后一个相同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多