While循环输出数字麻烦

本文关键字:麻烦 数字 输出 循环 While | 更新日期: 2023-09-27 18:11:37

我的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");
        }      
    }
}

While循环输出数字麻烦

你没有改变你的variableOne所以所有的时间当variableOne<variableTwo和while永远不会打破。

如果您想使用variableOne来删除variableTwo,您可以使用

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

variableOne < variableTwo

将while循环改为下面的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));

您的代码有两个问题。首先,在variableOnevariableTwo第一次赋值之后,您永远不会改变它们的值,因此当您进入while循环时,它将永远不会结束,因为variableOne <= variableTwo始终为真。为了正确地使用循环,你需要使用一个值会改变的变量。

第二,使用outputLabel.Text = i.ToString();,您不是将文本添加到标签的末尾,而是完全替换它。如果你的循环是有效的,这将导致你结束,不是"1,2,3,4,…",11",但只是"11"。

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