我的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");
}
}
}
答案 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)
您的代码有两个问题。首先,在第一次分配variableOne
和variableTwo
后,您永远不会更改它们,因此当您输入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");
}