Re: [問題] if else 問題

看板C_and_CPP (C/C++)作者 (朱子)時間16年前 (2009/10/03 22:11), 編輯推噓1(103)
留言4則, 2人參與, 最新討論串2/2 (看更多)
恕刪 原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

10/04 02:04, , 1F
小弟我記得, 輸入串流不清掉的話, 餵了一個錯誤型態的
10/04 02:04, 1F

10/04 02:05, , 2F
輸入(比如要數字給abc), 它就會一直卡在那邊啊@_@"
10/04 02:05, 2F

10/04 09:26, , 3F
哈哈 對
10/04 09:26, 3F
改了 ※ 編輯: mantour 來自: 61.57.112.182 (10/04 10:18)

10/04 10:22, , 4F
謝謝V大的提醒
10/04 10:22, 4F
文章代碼(AID): #1AnrkFcR (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1AnrkFcR (C_and_CPP)