目前我有一个工作计划,但我正在尝试不同的事情,看看它们是否有效。下面是我试图开始工作的代码,但有一个要求用户做出选择的功能。我想将该值返回到我的main函数中,该函数将运行包含case的do while循环。最初我把它作为if else if语句,但是如果可能的话想要减少它。以下是我正在使用的代码。运行程序时,它只返回整个菜单,而不是从应该返回的值运行函数。
{
int choice;
createEmptySeats();
seatPrice();
do {
choice = menu();
switch (choice)
{
case '1':
reserveSeat();
break;
case '2':
displayInfo();
break;
case '3':
DisplaySummary();
break;
case '4':
break;
}
}
while (!seatFull());
return 0;
}
int menu()
{
int userSelection = -1;
while (userSelection < 1 || userSelection > 4)
{
cout << "Please Choose Option Below" << endl;
cout << "1: Reserve Seat(s)"<<endl;
cout << "2: Display Available Seats" << endl;
cout << "3: Display Information:" << endl;
cout << "4: Exit System" << endl;
cin >> userSelection;
}
return userSelection;
}
{
int choice;
createEmptySeats();
seatPrice();
do {
choice = menu();
switch (choice)
{
case '1':
reserveSeat();
break;
case '2':
displayInfo();
break;
case '3':
DisplaySummary();
break;
case '4':
break;
}
}
while (!seatFull());
return 0;
}
int menu()
{
int userSelection = -1;
while (userSelection < 1 || userSelection > 4)
{
cout << "Please Choose Option Below" << endl;
cout << "1: Reserve Seat(s)"<<endl;
cout << "2: Display Available Seats" << endl;
cout << "3: Display Information:" << endl;
cout << "4: Exit System" << endl;
cin >> userSelection;
}
return userSelection;
}
答案 0 :(得分:1)
首先:您在每个案例的switch语句中都缺少break;
,案例4除外(不确定是否符合设计)。
第二:选择为int
,您的案例为char
。更改其中一个,以便它们都匹配。你从来没有找到适合自己案例的匹配,所以你只是继续循环。
答案 1 :(得分:1)
choice是int,你写的是char - '1','2'。写如下:
choice = menu();
switch (choice)
{
case 1:
reserveSeat();
break;
case 2:
displayInfo();
break;
// ...
在你的代码中,当选择的是ASCII代码'1'时,你可以来case '1'
,即49.在你的代码中,它永远不会发生,所以你用菜单()停留在无限循环中。 / p>