C# 如何将字符串更改为整数以在for循环中使用 我一直在做C++,但是最近我开始在C窗口窗体应用程序上做更多的工作,我正在编写一个程序,在那里输入一个数字,它翻转一个硬币的次数。这是我目前的代码: private void flipCoin_Click(object sender, EventArgs e) { Random rnd = new Random(); String HorT; int randomizer; for (int i = 0; i <= int.Parse(flipCoin.Text); i++) { randomizer = rnd.Next(1, 2); if (randomizer == 1) { HorT = "Heads"; } else { HorT = "Tails"; } richTextBox1.AppendText(Environment.NewLine + HorT); } } private void flipCoin\u单击(对象发送者,事件参数e) { 随机rnd=新随机(); 弦短; int随机化器; 对于(inti=0;i

C# 如何将字符串更改为整数以在for循环中使用 我一直在做C++,但是最近我开始在C窗口窗体应用程序上做更多的工作,我正在编写一个程序,在那里输入一个数字,它翻转一个硬币的次数。这是我目前的代码: private void flipCoin_Click(object sender, EventArgs e) { Random rnd = new Random(); String HorT; int randomizer; for (int i = 0; i <= int.Parse(flipCoin.Text); i++) { randomizer = rnd.Next(1, 2); if (randomizer == 1) { HorT = "Heads"; } else { HorT = "Tails"; } richTextBox1.AppendText(Environment.NewLine + HorT); } } private void flipCoin\u单击(对象发送者,事件参数e) { 随机rnd=新随机(); 弦短; int随机化器; 对于(inti=0;i,c#,C#,我在代码中看到两个问题 首先,如果您的用户键入的不是整数(或者根本不键入任何内容),则解析调用将抛出异常,如果可以,最好避免异常 第二,for循环,循环时间太长,从零开始,在小于1的极限处停止 所以你可以把你的代码改成 private void flipCoin_Click(object sender, EventArgs e) { Random rnd = new Random(); String HorT; int randomizer; int count;

我在代码中看到两个问题

首先,如果您的用户键入的不是整数(或者根本不键入任何内容),则解析调用将抛出异常,如果可以,最好避免异常

第二,for循环,循环时间太长,从零开始,在小于1的极限处停止

所以你可以把你的代码改成

private void flipCoin_Click(object sender, EventArgs e)
{
    Random rnd = new Random();
    String HorT;
    int randomizer;
    int count;

    // Int32.TryParse return false if the input is not an integer
    if(!Int32.TryParse(flipCoin.Text, out count))
    {
         MessageBox.Show("Please type an integer number");
         return;
    }

    // Loop until the indexer is less than the limit       
    for (int i = 0; i < count); i++)
    {
         ....
正如MSDN所说,下一次调用的参数是minValue和maxValue,但是maxValue应该是

返回的随机数的独占上限。maxValue必须为 大于或等于最小值

因此,如果您希望包含介于1和2之间的随机数,您应该编写

   randomizer = rnd.Next(1,3);

我建议不要使用字符串。我会使用bool。使用输入字符串并尽快将其转换为bool,如:

bool HorT = false;
if (input=="Head") HorT =true;
然后编写一个布尔翻转函数:

bool Flip(bool value) ...
然后将结果作为字符串放回:

string output = "Head";
if (HorT==true) output ="Tail";

这使您的逻辑与输入和输出分开,即使计算量增加,也可以避免此类问题。

问题出在哪里?请解释(int i=0;我确保flipcoin.text不为空。如果您有更多信息,您应该编辑问题,而不是将其全部放入注释中。这似乎效果很好,但事实上,当您键入整数时,它会显示“请键入整数”所以它从不显示结果:你把操作符放在方法调用Int32.TryParse之前的PDid!是的,没有它,它不会给非整数消息,但它不会做任何事情这很奇怪。Int32.TryParse是处理数字整数输入的正确方法,对我来说从未失败过。你在输入框中键入了什么?可以吗您在TryParse行上放置了一个断点,并检查单击事件中发生了什么?另一个问题,您是否有一个名为flipCoin的文本框,而不是一个具有该名称的按钮?
string output = "Head";
if (HorT==true) output ="Tail";