遇到菜单重新出现的问题。使用 switch 语句
我遇到一个问题,程序运行一次后再次自行运行。当它运行时,每个选择都正确运行,没有错误,但它永远不会退出程序。有人吗?
我觉得很愚蠢,我放置了 while 语句,以便它重复出现。好吧,现在如果我使用 while 语句,我还需要删除什么才能运行它?
#include <iostream>
using namespace std;
int main()
{
int in1, in2, in3;
char selection;
do
{
cout << " Welcome to the CS221 Homework 2 Menu\n";
cout << " ====================================\n";
cout << " 1. Multiply two integers\n";
cout << " 2. Divide two integers\n";
cout << " 3. Check if a number is within the range 10-20\n";
cout << " 4. Find the minimum of a list of 3 numbers\n";
cout << "\n";
cout << " 0. Exit\n";
cout << " ====================================\n";
cout << " Enter selection: ";
cin >> selection;
cout << endl;
switch (selection)
{
case '1':
cout << "Please enter two integers: ";
cin >> in1 >> in2;
cout << in1 << " times " << in2 << " is " << (in1 * in2) << endl;
break;
case '2':
cout << "Please enter two integers: ";
cin >> in1 >> in2;
cout << in1 << " divided by " << in2 << " is " << ((double) in1 / in2) << endl;
break;
case '3':
cout << "Please enter an integer: " ;
cin >> in1;
if ( (in1 >= 10) && (in1 <= 20) )
{
cout << in1 << " is within the range 10-20.\n";
}
else
{
cout << in1 << " is NOT within the range of 10-20.\n";
}
break;
case '4':
cout << "Please enter three integers: ";
cin >> in1 >> in2 >> in3;
cout << "The minimum is ";
if( (in1 <= in2) && (in2 <= in3) )
{
cout << in1;
}
else if( (in2 <= in1) && (in2 <=in3) )
{
cout << in2;
}
else
{
cout << in3;
}
cout << ".\n";
break;
case '0':
cout << "Goodbye.\n";
default: cout <<selection << "is not a valid menu item.\n";
cout << endl;
}
}while (selection != '0' );
return 0;
}
I am having a problem where the program runs itself again after it runs it one time. When it runs every selection is ran correctly with no errors but it never exits the program. anyone?
I feel dumb, I put the while statement so that it does repeat itself. Ok now if I take of the while statement, what else do I need to take off so that I can run it?
#include <iostream>
using namespace std;
int main()
{
int in1, in2, in3;
char selection;
do
{
cout << " Welcome to the CS221 Homework 2 Menu\n";
cout << " ====================================\n";
cout << " 1. Multiply two integers\n";
cout << " 2. Divide two integers\n";
cout << " 3. Check if a number is within the range 10-20\n";
cout << " 4. Find the minimum of a list of 3 numbers\n";
cout << "\n";
cout << " 0. Exit\n";
cout << " ====================================\n";
cout << " Enter selection: ";
cin >> selection;
cout << endl;
switch (selection)
{
case '1':
cout << "Please enter two integers: ";
cin >> in1 >> in2;
cout << in1 << " times " << in2 << " is " << (in1 * in2) << endl;
break;
case '2':
cout << "Please enter two integers: ";
cin >> in1 >> in2;
cout << in1 << " divided by " << in2 << " is " << ((double) in1 / in2) << endl;
break;
case '3':
cout << "Please enter an integer: " ;
cin >> in1;
if ( (in1 >= 10) && (in1 <= 20) )
{
cout << in1 << " is within the range 10-20.\n";
}
else
{
cout << in1 << " is NOT within the range of 10-20.\n";
}
break;
case '4':
cout << "Please enter three integers: ";
cin >> in1 >> in2 >> in3;
cout << "The minimum is ";
if( (in1 <= in2) && (in2 <= in3) )
{
cout << in1;
}
else if( (in2 <= in1) && (in2 <=in3) )
{
cout << in2;
}
else
{
cout << in3;
}
cout << ".\n";
break;
case '0':
cout << "Goodbye.\n";
default: cout <<selection << "is not a valid menu item.\n";
cout << endl;
}
}while (selection != '0' );
return 0;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
即使它可以在 ideone 上运行,我想如果有任何问题,那么问题就出在 类型上
selection
,因为使用它意味着逐字符读取,包括换行符和全部。因此,selection
的更好的类型选择是int
,因为它只会读取整数,跳过所有其他可能引发问题的字符。我建议您将
selection
的类型从char
更改为int
,并使用0
,1
、2
等,而不是'0'
、'1'
、'2'
等等。顺便说一下,你忘记在
case 中使用
:break
'0'不要忘记更改它(以及在所有
case
语句中):Even though it works at ideone, I guess if there is any problem, then the problem is with the type of
selection
, as using it means reading character by character, including newline and all. So a better choice of type forselection
would beint
, as it will read only integers, skipping all other characters which might be inviting problems.I would suggest you to change the type of
selection
fromchar
toint
, and use0
,1
,2
etc, rather than'0'
,'1'
,'2'
etc.By the way, you forgot to use
break
incase '0'
:Don't forgot to change this (and in all
case
statements):我认为您在这里缺少
return 0;
语句。I think you're missing a
return 0;
statement here.Exit 对我有用,但你的最低限度检查仍然不正确。 (尝试whit 1 3 2)
我会这样写那部分。
Exit works for me, but you still have incorrect minimum checking. (try whit 1 3 2)
I would write that part like.