如何在 switch case 中使用值?
How to use a value in switch case?
我对 C# 编程还很陌生,所以最近我被指派做一项作业来计算 "AverageSpeed",然后将其与 "maxSpeed" 相匹配。
我对 "maxSpeed" 有疑问,因为无论我输入什么值,我都会得到一个 "You are within the speed limit",我知道我不应该收到这样的消息。我怀疑他们使用的是 "maxSpeed" 的值 0 而不是这种情况下的最大速度。
该程序是关于请求用户提供驾驶员姓名、车辆类型和行驶距离(以分钟为单位),以查明驾驶员是否超过了最大允许速度。
请指教
private void btnSubmit_Click(object sender, EventArgs e)
{
int minutes = Convert.ToInt32(txtDuration.Text);
double miles = Convert.ToInt32(txtDistance.Text);
double hours = minutes / 60;
double AverageSpeed = GetMPH(hours, miles);
Object itemSelect = (Object)cboCarType.SelectedItem;
string carType = itemSelect.ToString();
int maxSpeed =0;
switch (carType)
{
case "Sedan":
maxSpeed = 100;
break;
case "Wagon":
maxSpeed = 90;
MessageBox.Show("Wagon");
break;
case "Truck":
maxSpeed = 50;
break;
case "Van":
maxSpeed = 60;
break;
case "Bus":
maxSpeed = 50;
break;
case "Tractor trailer":
maxSpeed = 30;
break;
}
if (AverageSpeed > maxSpeed)
{
MessageBox.Show("You have exceed the maximun speed!");
}
else
{
MessageBox.Show("You are within the speed limit!");
}
}
double GetMPH(double miles, double hours)
{
double GetMPH = miles / hours;
return GetMPH;
}
单步执行代码并找出 AverageSpeed 和 maxSpeed 的值是多少。根据您对错误的描述,我怀疑 AverageSpeed 始终为零。
将您的 switch
更改为函数,如下所示:
public int MaxSpeed(string carType)
{
switch (carType)
{
case "Sedan": return 100;
case "Wagon": return 90;
case "Truck": return 50;
case "Van": return 60;
case "Bus": return 50
case "Tractor trailer": return 30;
}
return 0;
}
这将允许您单独对函数进行单元测试并证明其有效。
可能是 switch 语句没有将 maxSpeed 更新为所选值。
在switch语句下个断点,看carType的值。
您已完成以下代码:
int minutes = Convert.ToInt32(txtDuration.Text);
double miles = Convert.ToInt32(txtDistance.Text);
double hours = minutes / 60;
double AverageSpeed = GetMPH(hours, miles);
将您的代码替换为以下代码:
double minutes = Convert.ToDouble(txtDuration.Text);
double miles = Convert.ToDouble(txtDistance.Text);
double hours = minutes / 60;
double AverageSpeed = GetMPH(miles, hours);
并确保您在 string carType
中获得正确的选择值。
希望对您有所帮助。
问题出在您的 carType 字符串中,该字符串未正确设置。
将 itemSelect.ToString()
更改为 itemSelect.Text
private void btnSubmit_Click(object sender, EventArgs e)
{
int minutes = Convert.ToInt32(txtDuration.Text);
double miles = Convert.ToInt32(txtDistance.Text);
double hours = minutes / 60;
double AverageSpeed = GetMPH(miles, hours);
Object itemSelect = (Object)cboCarType.SelectedItem;
string carType = itemSelect.Text;
int maxSpeed =0;
switch (carType)
{
case "Sedan":
maxSpeed = 100;
break;
case "Wagon":
maxSpeed = 90;
MessageBox.Show("Wagon");
break;
case "Truck":
maxSpeed = 50;
break;
case "Van":
maxSpeed = 60;
break;
case "Bus":
maxSpeed = 50;
break;
case "Tractor trailer":
maxSpeed = 30;
break;
}
if (AverageSpeed > maxSpeed)
MessageBox.Show("You have exceed the maximun speed!");
else
MessageBox.Show("You are within the speed limit!");
}
double GetMPH(double miles, double hours)
{
double GetMPH = miles / hours;
return GetMPH;
}
更新:
您还可以使用以下代码获取 carType。
//Object itemSelect = (Object)cboCarType.SelectedItem; //Remove this line
string carType = cboCarType.SelectedItem.Text;
并将您的 GetMPH 函数调用更改为 GetMPH(miles, hours)
也许您可以在 switch 语句上方的代码中打印 carType。
例如
MessageBox.Show(车型);
通过这种方式您可以检查 switch 语句是否有效。
例如carType真的是预期的轿车吗?
调试和设置断点当然也是可以的
我对 C# 编程还很陌生,所以最近我被指派做一项作业来计算 "AverageSpeed",然后将其与 "maxSpeed" 相匹配。
我对 "maxSpeed" 有疑问,因为无论我输入什么值,我都会得到一个 "You are within the speed limit",我知道我不应该收到这样的消息。我怀疑他们使用的是 "maxSpeed" 的值 0 而不是这种情况下的最大速度。
该程序是关于请求用户提供驾驶员姓名、车辆类型和行驶距离(以分钟为单位),以查明驾驶员是否超过了最大允许速度。
请指教
private void btnSubmit_Click(object sender, EventArgs e)
{
int minutes = Convert.ToInt32(txtDuration.Text);
double miles = Convert.ToInt32(txtDistance.Text);
double hours = minutes / 60;
double AverageSpeed = GetMPH(hours, miles);
Object itemSelect = (Object)cboCarType.SelectedItem;
string carType = itemSelect.ToString();
int maxSpeed =0;
switch (carType)
{
case "Sedan":
maxSpeed = 100;
break;
case "Wagon":
maxSpeed = 90;
MessageBox.Show("Wagon");
break;
case "Truck":
maxSpeed = 50;
break;
case "Van":
maxSpeed = 60;
break;
case "Bus":
maxSpeed = 50;
break;
case "Tractor trailer":
maxSpeed = 30;
break;
}
if (AverageSpeed > maxSpeed)
{
MessageBox.Show("You have exceed the maximun speed!");
}
else
{
MessageBox.Show("You are within the speed limit!");
}
}
double GetMPH(double miles, double hours)
{
double GetMPH = miles / hours;
return GetMPH;
}
单步执行代码并找出 AverageSpeed 和 maxSpeed 的值是多少。根据您对错误的描述,我怀疑 AverageSpeed 始终为零。
将您的 switch
更改为函数,如下所示:
public int MaxSpeed(string carType)
{
switch (carType)
{
case "Sedan": return 100;
case "Wagon": return 90;
case "Truck": return 50;
case "Van": return 60;
case "Bus": return 50
case "Tractor trailer": return 30;
}
return 0;
}
这将允许您单独对函数进行单元测试并证明其有效。
可能是 switch 语句没有将 maxSpeed 更新为所选值。 在switch语句下个断点,看carType的值。
您已完成以下代码:
int minutes = Convert.ToInt32(txtDuration.Text);
double miles = Convert.ToInt32(txtDistance.Text);
double hours = minutes / 60;
double AverageSpeed = GetMPH(hours, miles);
将您的代码替换为以下代码:
double minutes = Convert.ToDouble(txtDuration.Text);
double miles = Convert.ToDouble(txtDistance.Text);
double hours = minutes / 60;
double AverageSpeed = GetMPH(miles, hours);
并确保您在 string carType
中获得正确的选择值。
希望对您有所帮助。
问题出在您的 carType 字符串中,该字符串未正确设置。
将 itemSelect.ToString()
更改为 itemSelect.Text
private void btnSubmit_Click(object sender, EventArgs e)
{
int minutes = Convert.ToInt32(txtDuration.Text);
double miles = Convert.ToInt32(txtDistance.Text);
double hours = minutes / 60;
double AverageSpeed = GetMPH(miles, hours);
Object itemSelect = (Object)cboCarType.SelectedItem;
string carType = itemSelect.Text;
int maxSpeed =0;
switch (carType)
{
case "Sedan":
maxSpeed = 100;
break;
case "Wagon":
maxSpeed = 90;
MessageBox.Show("Wagon");
break;
case "Truck":
maxSpeed = 50;
break;
case "Van":
maxSpeed = 60;
break;
case "Bus":
maxSpeed = 50;
break;
case "Tractor trailer":
maxSpeed = 30;
break;
}
if (AverageSpeed > maxSpeed)
MessageBox.Show("You have exceed the maximun speed!");
else
MessageBox.Show("You are within the speed limit!");
}
double GetMPH(double miles, double hours)
{
double GetMPH = miles / hours;
return GetMPH;
}
更新: 您还可以使用以下代码获取 carType。
//Object itemSelect = (Object)cboCarType.SelectedItem; //Remove this line
string carType = cboCarType.SelectedItem.Text;
并将您的 GetMPH 函数调用更改为 GetMPH(miles, hours)
也许您可以在 switch 语句上方的代码中打印 carType。 例如
MessageBox.Show(车型);
通过这种方式您可以检查 switch 语句是否有效。 例如carType真的是预期的轿车吗?
调试和设置断点当然也是可以的