我正在尝试制作一个简单的距离计算器,输出在球场上行进的里程数 用户定义的时间以用户定义的速度到列表框。我使用了一系列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");
}
}
答案 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