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");
}
}
}
你没有改变你的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));
您的代码有两个问题。首先,在variableOne
和variableTwo
第一次赋值之后,您永远不会改变它们的值,因此当您进入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");
}