断开并转到嵌套开关内的位置
Break and goto placement inside a nested switch
#include "Menu.h"
#include <iostream>
#include <stdio.h>
#include <string>
void Menu::displayMenu() {
cout << " 1. New User login n 2. View available vehicles n 3. Return Vehicle n 4. Exit Program n";
char choice;
cin >> choice;
main:
switch (choice) {
case '1': //new user option
login();
break;
case '2': //This will be the option for viewing available cars. each choice in this switch will lead to car info and choice to rent.
carmenu:
cout << "Now viewing available vehicles...Select vehicle for further information...n";
cout << " 1. Toyota Carolla n 2. Toyota Rav4 n 3. Toyota Prius n 4. Ford Mustang n 5. Ford Transit n 6. Main Menu n";
char rent;
char carchoice;
cin >> carchoice;
switch (carchoice) {
case '1':
cout << "Toyota Carolla..n Passenger class n 30 MPG n 4 Doors n";
cout << "Enter Y to rent vehicle or enter N to return to car selection...n";
cin >> rent;
if (rent == 'Y') {
//construct
}
else if (rent == 'N') { goto carmenu; };
case '2':
cout << "Toyota Rav4..n Passenger class n 24 MPG n 5 Doors n";
cout << "Enter Y to rent vehicle or enter N to return to car selection...n";
cin >> rent;
if (rent == 'Y') {
//call passenger car constructor called Rav4 with proper data entries.
}
else if (rent == 'N') { goto carmenu; };
break;
case '3':
cout << "Toyota Prius.. n Passenger class n 54 MPG n 4 Doors n";
cout << "Enter Y to rent vehicle or enter N to return to car selection...n";
cin >> rent;
if (rent == 'Y') {
//call passenger car constructor called Prius with proper data entries.
}
else if (rent == 'N') { goto carmenu; };
break;
case '4':
cout << "Ford Mustang.. n Passenger class n 18 MPG n 2 Doors n";
cout << "Enter Y to rent vehicle or enter N to return to car selection...n";
cin >> rent;
if (rent == 'Y') {
//call passenger car constructor called Mustang with proper data entries.
break;
}
else if (rent == 'N') { goto carmenu; };
break;
case '5':
cout << "Ford Transit ..n Cargo class n 14 MPG n";
cout << "Enter Y to rent vehicle or enter N to return to car selection...n";
cin >> rent;
if (rent == 'Y') {
Cargo van(14);
van.set_purpose();
}
else if (rent == 'N') { goto carmenu; };
case '6':
goto main;
}//second switch
}//first switch
}//function end
我希望这不会太难阅读...我正在做一个项目,我必须为一家公司设计一个汽车租赁计划。主菜单的第二种情况将用户带到一个菜单,他可以在其中选择要租用的汽车类型。菜单尚未完全完成,但我已经完成了汽车选择菜单选项 5 的课程。当租车时(在if语句中输入Y(,货物的构造函数被正确调用,但程序要么在输入目的后立即结束,要么返回到汽车租赁页面。我不知道在哪里休息或去发言。谁能帮忙??
通过将break
放在每个案例的末尾,它将脱离当前案例下方的案例并执行其余代码。 如果您输入"Y"作为您的租金选择,您的程序将再次返回到汽车菜单,因为变量choice
永远不会重新分配,因此它将保持"2"。 如果您输入"N",您将因为goto carmenu
而返回选择汽车。 对于所有其他输入,您没有 else 情况,因此程序将在中断后退出。
我建议将代码分解为函数,而不是使用 goto
. 如果您遇到这样的错误,它将变得更容易遵循和理解。
相关文章:
- 将值指定给向量(2D)的向量中的某个位置
- 使用Unreal C++获取VR耳机的世界位置/方向
- 既然存在危险,为什么项目要使用-I include开关
- 写入位置0x0000000C时发生访问冲突
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- GL_SHADERSTORAGE_BUFFER位置是否与其他着色器位置冲突
- 为什么这个音频包络不能通过开关的情况?
- 如何使用cudaMallocManaged在指针位置初始化对象?(C++)
- 无法获取webot::PositionSensor对象中位置传感器的值
- 非常量变量只读位置的赋值
- 如何定义更改car类中car位置的方法
- 使用迭代器时如何访问对象在向量中的位置?
- 更改.cpp程序的输入文件中数据的位置会意外更改输出
- 求最大元素位置的分治算法
- 有人知道为什么在开关中使用stoi函数会返回恒定的错误吗
- 你好。。。id_public变量不应该给出结果为 81 和 86 吗?为什么它为两个派生类占用不同的内存位置?
- 为什么我的点没有在 OpenGL 中绘制鼠标所在的位置?
- 如何将元素添加到向量的字符串位置
- 如何选择在 csv 文件中输出的位置
- 如何在这两个分类的链接列表之间获得开关的位置