作者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
推 VictorTom:小弟我記得, 輸入串流不清掉的話, 餵了一個錯誤型態的 10/04 02:04
→ VictorTom:輸入(比如要數字給abc), 它就會一直卡在那邊啊@_@" 10/04 02:05
→ mantour:哈哈 對 10/04 09:26
改了
※ 編輯: mantour 來自: 61.57.112.182 (10/04 10:18)
→ mantour:謝謝V大的提醒 10/04 10:22