而循环输出数字有问题

时间:2016-10-05 01:51:42

标签: c#

我的while循环遇到了麻烦。我被要求编写一个程序,用户输入两个数字,例如1和11.我需要程序在输出中显示1,2,3,4,5,6,7,8,9,10,11标签,但我无法弄清楚..这是我到目前为止。

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void whileButton_Click(object sender, EventArgs e)
    {
        double variableOne = 0;
        double variableTwo = 0;
        int i = 0;

        //Get number
        if (double.TryParse(variableOneText.Text, out variableOne))
        {
            if (double.TryParse(variableTwoText.Text, out variableTwo))
            {
                while (variableOne <= variableTwo)
                {
                    i = i + 1;
                    outputLabel.Text = i.ToString();
                }
            }
            else
            {
                MessageBox.Show("Please enter a number");
            }

        }
        else
        {
            MessageBox.Show("Please enter a number");
        }      
    }
}

3 个答案:

答案 0 :(得分:0)

你没有改变你的variableOne所以variableOne<variableTwo和while永远不会中断。

如果要使用variableOne来剪切variableTwo,可以使用

double temp = variableOne ;
variableOne = variableTwo ;
variableTwo = temp ;

variableOne < variableTwo

答案 1 :(得分:0)

使用以下内容更改您的while循环:

var sb = new StringBuilder();
while (variableOne <= variableTwo)
{
      sb.Append(string.Concat(variableOne,","));
      variableOne      = variableOne + 1;

}
outputLabel.Text = sb.ToString().Remove(sb.ToString().Length-1));

答案 2 :(得分:0)

您的代码有两个问题。首先,在第一次分配variableOnevariableTwo后,您永远不会更改它们,因此当您输入while循环时,它永远不会结束,因为variableOne <= variableTwo 总是

其次,使用outputLabel.Text = i.ToString();,您不会将文本添加到标签的末尾,而是完全替换它。如果你的循环功能正常,这将导致你结束,而不是&#34; 1,2,3,4,...,11&#34;,只是&#34; 11&#34;。

int variableOne;
int variableTwo;

if (int.TryParse(variableOneText.Text, out variableOne))
{
    if (int.TryParse(variableTwoText.Text, out variableTwo))
    {
        StringBuilder sb = new StringBuilder();

        for (int i = variableOne; i <= variableTwo; i++)
        {
            if (sb.Length > 0)
                sb.Append(",");

            sb.Append(i);
        }

        outputLabel.Text = sb.ToString();
    }
    else
    {
        MessageBox.Show("Please enter a number");
    }
}
else
{
    MessageBox.Show("Please enter a number");
}