【问题标题】:My switch is not working我的开关不工作
【发布时间】:2014-10-20 08:29:49
【问题描述】:
case 1: //Option 1
    {
        cout<<"Enter Car Brand:"<<endl;
        cin>>search_car; //Identify which car brand to be search
        search_car.front() = std::toupper( search_car.front() );
        for(int x=0; x<cnt; x++) //Loop to last account, by using cnt we can stop when the array is a null
        {
            if(search_car==car_brand[x])//Detecting which car brand same as user input
            {
                cout<<"\n\tCar Registration Number:"<<car_num[x]<<endl;
                cout<<"\n\tCar Make or Brand:"<<car_brand[x]<<endl;
                cout<<"\n\tCar Model:"<<car_model[x]<<endl;
                cout<<"\n\tCar Colour:"<<car_colour[x]<<endl;
                cout<<"\n\tYear of Manufacturing:"<<car_year[x]<<endl;
                cout<<"\n\tEngine Capacity:"<<car_eng_cap[x]<<"cc"<<endl;
                cout<<"\n\tTransmission:"<<car_tran[x]<<endl;
                cout<<"\n\tCost of Car: RM"<<car_cost[x]<<endl;
            }
            else
                cout<<"No data is founded."<<endl;
            break;
        }
    }
case 2: //Option 2
    {
        cout<<"Enter Car Model:"<<endl;
        cin>>search_car; //Identify which car model to be search
        search_car.front() = std::toupper( search_car.front() );
        for(int y=0 ; y<cnt ; y++)
        {
            if(search_car==car_model[y])//Detecting which car model same as user input
            {
                cout<<"\n\tCar Registration Number:"<<car_num[y]<<endl;
                cout<<"\n\tCar Make or Brand:"<<car_brand[y]<<endl;
                cout<<"\n\tCar Model:"<<car_model[y]<<endl;
                cout<<"\n\tCar Colour:"<<car_colour[y]<<endl;
                cout<<"\n\tYear of Manufacturing:"<<car_year[y]<<endl;
                cout<<"\n\tEngine Capacity:"<<car_eng_cap[y]<<"cc"<<endl;
                cout<<"\n\tTransmission:"<<car_tran[y]<<endl;
                cout<<"\n\tCost of Car: RM"<<car_cost[y]<<endl;
            }
            else
                cout<<"No data is founded."<<endl;
            break;
        }
    }
case 3: //Option 3
    {
        cout<<"Enter Year of Manufacturing:"<<endl;
        cin>>search_car;
        for(int x=0; x<cnt; x++)
        {
            if(search_car==car_year[x])//Detecting which car manufacturing year same as user input
            {
                cout<<"\n\tCar Registration Number:"<<car_num[x]<<endl;
                cout<<"\n\tCar Make or Brand:"<<car_brand[x]<<endl;
                cout<<"\n\tCar Model:"<<car_model[x]<<endl;
                cout<<"\n\tCar Colour:"<<car_colour[x]<<endl;
                cout<<"\n\tYear of Manufacturing:"<<car_year[x]<<endl;
                cout<<"\n\tEngine Capacity:"<<car_eng_cap[x]<<"cc"<<endl;
                cout<<"\n\tTransmission:"<<car_tran[x]<<endl;
                cout<<"\n\tCost of Car: RM"<<car_cost[x]<<endl;
            }
            else
                cout<<"No data is founded."<<endl;
            break;
        }
    }
case 4: //Option 4
   {
       cout<<"Enter Car Price:"<<endl;
       cin>>search_car;
       for(int x=0 ; x<cnt; x++)
       {
           if(search_car==car_cost[x])//Detecting which car price same as user input
           {
               cout<<"\n\tCar Registration Number:"<<car_num[x]<<endl;
               cout<<"\n\tCar Make or Brand:"<<car_brand[x]<<endl;
               cout<<"\n\tCar Model:"<<car_model[x]<<endl;
               cout<<"\n\tCar Colour:"<<car_colour[x]<<endl;
               cout<<"\n\tYear of Manufacturing:"<<car_year[x]<<endl;
               cout<<"\n\tEngine Capacity:"<<car_eng_cap[x]<<"cc"<<endl;
               cout<<"\n\tTransmission:"<<car_tran[x]<<endl;
               cout<<"\n\tCost of Car: RM"<<car_cost[x]<<endl;
            }
           else
                cout<<"No data is founded."<<endl;
           break;
       }
   }
case 5: //Option 5
    {
        cout<<"Operation Canceled."<<endl;
        break;
    }

好像不管我在option里输入什么数字,输出都会让我输入汽车品牌,在我输入和输入后,它只会弹出我们的第二个选项让我输入汽车型号.. ..似乎开关盒无法正常工作,我该如何解决?

[更新]

这是我想问的另一个问题:

我有这样的代码:

案例1://选项1

{

cout

cin>>car_brand[x];

}

休息;

我要怎么做才能改变输入的汽车品牌第一个字符是大写的?例如,我输入 toyota,输出将变为 Toyota。

【问题讨论】:

  • 没有看到您发布的代码正上方的那几行,就无法知道
  • 您没有展示最重要的部分:switch 语句是什么,您如何获得该变量?
  • case 块中的代码不需要大括号。
  • 另外else cout&lt;&lt;"No data is founded."&lt;&lt;endl; break; 放错地方了
  • @Barmar 你确实有时需要在case 块中的代码周围加上大括号。尽管在 this 实例中不需要它们。

标签: c++ visual-studio-2010 switch-statement


【解决方案1】:

您的breaks 完全放错了地方。

将它们移出for 循环!

【讨论】:

    【解决方案2】:

    您已将 break 语句放在您的 for 循环中,这将使您从循环中中断,然后进入下一个 switch 案例。如果你想从 switch case 中中断,break 语句应该是 switch case 中右大括号之前的最后一行。

    case 1:
    {
        for(...)
        {
            ...
        }
        break;
    }
    

    【讨论】:

      【解决方案3】:

      您的案例结束时没有breakbreak 语句位于循环内。

      【讨论】:

        【解决方案4】:

        正如已经指出的那样,您的案例是错误的。例如在这种情况下

        case 1: //Option 1
            {
                cout<<"Enter Car Brand:"<<endl;
                cin>>search_car; //Identify which car brand to be search
                search_car.front() = std::toupper( search_car.front() );
                for(int x=0; x<cnt; x++) //Loop to last account, by using cnt we can stop when the array is a null
                {
                    if(search_car==car_brand[x])//Detecting which car brand same as user input
                    {
                        cout<<"\n\tCar Registration Number:"<<car_num[x]<<endl;
                        cout<<"\n\tCar Make or Brand:"<<car_brand[x]<<endl;
                        cout<<"\n\tCar Model:"<<car_model[x]<<endl;
                        cout<<"\n\tCar Colour:"<<car_colour[x]<<endl;
                        cout<<"\n\tYear of Manufacturing:"<<car_year[x]<<endl;
                        cout<<"\n\tEngine Capacity:"<<car_eng_cap[x]<<"cc"<<endl;
                        cout<<"\n\tTransmission:"<<car_tran[x]<<endl;
                        cout<<"\n\tCost of Car: RM"<<car_cost[x]<<endl;
                    }
                    else
                        cout<<"No data is founded."<<endl;
                    break;
                }
            }
        

        您退出循环取决于是否找到汽车。此案例标签的控制也传递给下一个案例标签。

        这种情况应该是这样的(我假设只能存在一辆具有给定品牌的汽车,否则您应该在 ;loop 中输出所有信息)

        case 1: //Option 1
            {
                cout<<"Enter Car Brand:"<<endl;
                cin>>search_car; //Identify which car brand to be search
                search_car.front() = std::toupper( search_car.front() );
        
                int x = 0; 
                while ( x < cnt && search_car != car_brand[x] ) x++; //Loop to last account, by using cnt we can stop when the array is a null
        
                if ( x != cnt )//Detecting which car brand same as user input
                {
                    cout<<"\n\tCar Registration Number:"<<car_num[x]<<endl;
                    cout<<"\n\tCar Make or Brand:"<<car_brand[x]<<endl;
                    cout<<"\n\tCar Model:"<<car_model[x]<<endl;
                    cout<<"\n\tCar Colour:"<<car_colour[x]<<endl;
                    cout<<"\n\tYear of Manufacturing:"<<car_year[x]<<endl;
                    cout<<"\n\tEngine Capacity:"<<car_eng_cap[x]<<"cc"<<endl;
                    cout<<"\n\tTransmission:"<<car_tran[x]<<endl;
                    cout<<"\n\tCost of Car: RM"<<car_cost[x]<<endl;
                }
                else
                }
                    cout<<"No data is founded."<<endl;
                }
        
                break;
            }
        

        尝试以类似的方式重写所有其他情况。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-08-15
          • 2017-09-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多