C# 如何在开关情况下使用值?

C# 如何在开关情况下使用值?,c#,switch-statement,C#,Switch Statement,我对C#编程相当陌生,所以最近我被指派做一项任务,计算“AverageSpeed”,然后将其与“maxSpeed”匹配 我对“maxSpeed”有异议,因为无论我输入什么值,我都会得到一个“你在速度限制内”,我知道我不应该收到这样的消息。我怀疑他们使用的是“maxSpeed”值0,而不是本例中的最大速度 该程序要求用户输入驾驶员姓名、车辆类型和行驶距离,持续时间以分钟为单位,以查明驾驶员是否超过了最大允许速度 请告知 private void btnSubmit_Click(object sen

我对C#编程相当陌生,所以最近我被指派做一项任务,计算“AverageSpeed”,然后将其与“maxSpeed”匹配

我对“maxSpeed”有异议,因为无论我输入什么值,我都会得到一个“你在速度限制内”,我知道我不应该收到这样的消息。我怀疑他们使用的是“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始终为零

开关更改为函数,如下所示:

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;
}

这将允许您单独对函数进行单元测试,并证明它是有效的。

逐步浏览代码,找出AverageSpeed和maxSpeed的值。根据对您错误的描述,我怀疑AverageSpeed始终为零

开关更改为函数,如下所示:

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;
}

这将允许您单独对函数进行单元测试,并证明它是有效的。

逐步浏览代码,找出AverageSpeed和maxSpeed的值。根据对您错误的描述,我怀疑AverageSpeed始终为零

开关更改为函数,如下所示:

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;
}

这将允许您单独对函数进行单元测试,并证明它是有效的。

逐步浏览代码,找出AverageSpeed和maxSpeed的值。根据对您错误的描述,我怀疑AverageSpeed始终为零

开关更改为函数,如下所示:

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的值。

switch语句可能不会将maxSpeed更新为所选值。
在switch语句处放置断点以查看carType的值。

switch语句可能不会将maxSpeed更新为所选值。
在switch语句处放置断点以查看carType的值。

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);
并确保在
字符串类型中获得正确的选定值


希望这将对您有所帮助。

您已完成以下代码:

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);
并确保在
字符串类型中获得正确的选定值


希望这将对您有所帮助。

您已完成以下代码:

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);
并确保在
字符串类型中获得正确的选定值


希望这将对您有所帮助。

您已完成以下代码:

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);
并确保在
字符串类型中获得正确的选定值


希望这能对您有所帮助。

问题在于您的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(英里,小时)

问题在于您的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(英里,小时)

问题在于您的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(英里,小时)

问题在于您的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(英里,小时)

也许您可以在switch语句上方的代码中打印carType。 比如说

MessageBox.Show(carType)

这样可以检查switch语句是否正常工作。 e、 carType真的像预期的那样是一辆轿车吗


调试和设置断点当然也是可能的。

也许您可以在switch语句上方的代码中打印carType。 比如说

MessageBox.Show(carType)

这样可以检查switch语句是否正常工作。 e、 carType真的像预期的那样是一辆轿车吗


调试和设置断点当然也是可能的。

也许您可以在switch语句上方的代码中打印carType。 比如说

MessageBox.Show(carType)

这样可以检查switch语句是否正常工作。 e、 carType真的像预期的那样是一辆轿车吗


调试和设置断点当然也是可能的。

也许您可以在switch语句上方的代码中打印carType。 比如说

MessageBox.Show(carType)

这样可以检查switch语句是否正常工作。 e、 carType真的像预期的那样是一辆轿车吗


当然,调试和设置断点也是可能的。

单步执行代码时会发生什么?调试器应该告诉您一切