我目前遇到此循环问题。它变成一个无限循环,我得到一个堆栈溢出错误。这是针对利率交易互换申请。我是交易的长度,而l是增长指数。
private void button1_Click(object sender, EventArgs e)
{
int outp = 0;
int i = int.Parse(tradeLength.Text);
string month = "January";
for (int l = 1; l <= i; l++)
{
Console.WriteLine("I iterated " + l + " Amount of times");
if (l == 1)
{
month = "January";
}
if (l == 2)
{
month = "February";
}
if (l == 3)
{
month = "March";
}
if (l == 4)
{
month = "Aprll";
}
if (l == 5)
{
month = "May";
}
if (l == 6)
{
month = "June";
}
if (l == 7)
{
month = "July";
}
if (l == 8)
{
month = "August";
}
if (l == 9)
{
month = "September";
}
if (l == 10)
{
month = "October";
}
if (l == 11)
{
month = "November";
}
if (l == 12)
{
month = "December";
}
else
{
month = "Null";
l = 1;
}
答案 0 :(得分:1)
原因是最终blue | Jake | 35
blue | Paul | 35
blue | Mike | 35
red | Bob | 42
red | Jill | 42
red | Shawn| 42
:
else
你想要 if (l == 12) {
month = "December";
}
else { // <- if l != 12 (e.g. l == 1) restart the loop
month = "Null";
l = 1;
}
:
else if
编辑:另一个问题(请参阅 FKEinternet的评论)是用户输入:如果 if (l == 1)
{
month = "January";
}
else if (l == 2)
{
...
}
...
else if (l == 12)
{
...
}
else {
month = "Null";
l = 1;
}
大于{{1} }} i
永远不会达到它。您必须验证用户输入:
12
或使用 modular 算法:
l
答案 1 :(得分:1)
在循环中设置循环变量不是一个好主意。就像@stuartd指出的那样,在你的else行中你将循环变量设置为1并导致循环重新开始。删除else块中的l=1
行。
答案 2 :(得分:0)
我认为你想明年去i> 12.编写代码的方式,当发生这种情况时,你会永远循环,因为“l”永远不会达到大于12的数字,当它达到13并重新开始时它会变为1。
解决此问题,而不是
if (l == 1)
你想用
if ((l % 12) == 1)
所以你的整个循环就像这样:
for (int l = 1; l <= i; l++)
{
Console.WriteLine("I iterated " + l + " Amount of times");
if ((l % 12) == 1)
{
month = "January";
}
if ((l % 12) == 2)
{
month = "February";
}
if ((l % 12) == 3)
{
month = "March";
}
if ((l % 12) == 4)
{
month = "Aprll";
}
if ((l % 12) == 5)
{
month = "May";
}
if ((l % 12) == 6)
{
month = "June";
}
if ((l % 12) == 7)
{
month = "July";
}
if ((l % 12) == 8)
{
month = "August";
}
if ((l % 12) == 9)
{
month = "September";
}
if ((l % 12) == 10)
{
month = "October";
}
if ((l % 12) == 11)
{
month = "November";
}
if ((l % 12) == 0)
{
month = "December";
}
{
PS =这真的不是正确的方法,我只是使用你自己的代码并使用尽可能少的mod工作。祝你好运!