如何将字符串更改为整数以用于for循环

本文关键字:整数 用于 for 循环 字符串 | 更新日期: 2023-09-27 18:24:32

我一直在做C++,但最近我开始在C#Windows窗体应用程序上做更多的工作,我正在制作一个程序,你可以输入一个数字,它可以翻转硬币那么多次。这是我迄今为止的代码:

    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);
        }
    }

我做错了什么?

如何将字符串更改为整数以用于for循环

我在您的代码中看到两个问题。

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

第二,对于循环,循环时间太长,你从零开始,停止在限制小于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++)
    {
         ....

编辑
刚刚注意到这条线上的另一个问题

   randomizer = rnd.Next(1,2);

MSDN说Next调用的参数是minValue和maxValue,但maxValue应该是

返回的随机数的独占上限。maxValue必须大于或等于minValue。

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

   randomizer = rnd.Next(1,3);

我建议不要使用字符串。我会喝一杯。获取输入字符串,并尽快将其转换为类似bool的:

bool HorT = false;
if (input=="Head") HorT =true;

然后编写一个布尔Flip函数:

bool Flip(bool value) ...

然后将结果放回字符串:

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

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