作者mantour (朱子)
看板C_and_CPP
标题Re: [问题] if else 问题
时间Sat Oct 3 22:11:24 2009
恕删
原po的问题其实在写互动式程式时常会遇到
基本型就是,我要对不同的输入做反应
但当使用者的输入不符合规定时,希望让他重新输入
一般的作法就是用一个while把判断式合不合规定的判断式包起来
比如说
你本来写
(因为怕型别不合,所以输入一律当成字串)
string a;
cin>>a;
if(a=="1")
{
//do something
}
else if (a=="22")
{
//do something
}
就可以改成
string a;
while(1)
{
cin>>a;
if(a=="1")
{
//do something
break;
}
else if (a=="2")
{
//do something
break;
}
else
{
cout<<"please enter again!\n";
}
}
不过如果是写成switch case 就会麻烦一点(因为没有办法从case中直接跳出来)
大概会写成
char a;
flag=1;
while(flag==1)
{
cin>>a;
switch(a)
{
case 1:
//do something
flag=0;
break;
case 2:
//do something
flag=0;
break;
default:
cout<< " please enter again \n";
}
}
然後如果一次输入好几个字元的话它会一次读一个
如果希望每次都重新输入的话,就要先把stdin清掉
以上应该算是最简单的处理方法了吧
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.57.112.182
1F:推 VictorTom:小弟我记得, 输入串流不清掉的话, 喂了一个错误型态的 10/04 02:04
2F:→ VictorTom:输入(比如要数字给abc), 它就会一直卡在那边啊@_@" 10/04 02:05
3F:→ mantour:哈哈 对 10/04 09:26
改了
※ 编辑: mantour 来自: 61.57.112.182 (10/04 10:18)
4F:→ mantour:谢谢V大的提醒 10/04 10:22