在使用while循环向listbox添加项目时,程序失败

时间:2014-10-15 22:26:07

标签: c# while-loop

我正在尝试制作一个简单的距离计算器,输出在球场上行进的里程数 用户定义的时间以用户定义的速度到列表框。我使用了一系列IF语句来捕获任何无效的输入。加载后我可以输入无效输入并且它正常运行,所以我知道问题与我的if有关。当我键入正确的数字,整个程序冻结然后窗口告诉我它已退出响应。我之前从来没有遇到这样的问题。

int vehicleSpeed;
int hoursTraveled;
int loopCounter = 1;

private void calculateDIstanceButton_Click(object sender, EventArgs e)
{
    if (int.TryParse(vehicleSpeedTextbox.Text, out vehicleSpeed))
    {
        if (int.TryParse(hoursTravledTextbox.Text, out hoursTraveled))
        {
            while (loopCounter <= hoursTraveled)
                distanceCalculationsListBox.Items.Add("The Distance traveled after " + loopCounter + " hour is " + (vehicleSpeed * hoursTraveled));
            ++loopCounter;
        }

        else
        {
            MessageBox.Show("That is not a valid input for time");
        }
    }

    else
    {
        MessageBox.Show("That is not a valid speed input");
    }

}

2 个答案:

答案 0 :(得分:2)

您需要将循环内容包装在大括号中。就目前而言,++loopCounter命令超出了while循环的范围,并且永远不会在任何迭代上运行,这会导致它无限循环并导致程序崩溃。如果没有大括号,while循环只会在下一行上运行命令。大括号迫使它在范围内。

while (loopCounter <= hoursTraveled)
{
    distanceCalculationsListBox.Items.Add("The Distance traveled after " + loopCounter + " hour is " + (vehicleSpeed * hoursTraveled));
    ++loopCounter;
}

答案 1 :(得分:2)

while (loopCounter <= hoursTraveled)
                distanceCalculationsListBox.Items.Add("The Distance traveled after " + loopCounter + " hour is " + (vehicleSpeed * hoursTraveled));
++loopCounter;

是一个无限循环,因为没有{},while循环只包含{{1>}之后的下一个语句。因此,while永远不会增加,并且条件始终为真。你需要使用:

loopCounter