置頂
cin 連續輸入如何判斷字元或數字
在練習題目中遇到了此問題,想輸入一座標(x,y),當輸入錯誤時
重新進入while。可是當小弟使用連續cin時,無法判斷x1,y1是否為數字
只要x1,y1非數字就會陷入無限回圈中,因此想詢問各位大大可否有解決辦法。
01 char BracketBefore, BracketLater,comma;//括弧前後,逗號
02 double x1, y1, x2, y2, x3, y3;//座標點
03 //第一個座標輸入
04 while (1)
05 {
06 cout << "請輸入座標:";
07 cin >> BracketBefore >> x1 >> comma >> y1 >> BracketLater; //輸入(x1,y1)
08 if ( BracketBefore != '(' ){ cout << "數字前請輸入 '(' " << endl; } //判
斷是否為(
09 if ( x1=1)else{ cout << "第一個數請輸入數字" << endl; } //判斷是否為數字
10 if ( comma != ',' ){ cout << "兩數字中間請輸入 ',' " << endl; } //判斷是
否為 ,
11 if ( y1 = 1 ){}else{ cout << "第二個數請輸入數字" << endl; } //判斷是否為
數字
12 if ( BracketLater != ')' ){ cout << "數字後請輸入 ')' " << endl;} //判斷
是否為)
13
14 cout << BracketBefore << x1 << comma << y1 << BracketLater;//輸出(x1,y1)
15 if ((BracketBefore == '(') || (comma == ',') || (BracketLater == ')')){ b
reak; }
16 }
小弟目前想到的方法是改成這樣
01 char BracketBefore, BracketLater,comma;//括弧前後,逗號
02 double x1, y1, x2, y2, x3, y3;//座標點
03 //第一個座標輸入
04 while (1)
05 {
06 cout << endl << "第一個:";
07 cin >> BracketBefore;
08 if ((BracketBefore != '(')){cout << "數字前請輸入 '('"; continue; }//(
09 if (cin >> x1){}else{ cout << "請輸入數字"; continue; }
10 cin.clear(); cin.sync();//X1
11 cin >> comma; if (comma != ','){cout << "兩數字中間請輸入','";continue;}//,
12 if (cin >> y1){}else{ cout << "請輸入數字"; continue; }
13 cin.clear(); cin.sync();//Y1
14 cin >> BracketLater;if(BracketLater !=')'){cout<<"數字後請輸入')'"; conti
nue; }//)
15 cout << BracketBefore << x1 << comma << y1 << BracketLater;
16 if ((BracketBefore == '(') || (comma == ',')||(BracketLater == ')')){brea
k; }
17 }
可是這樣此程式碼變成只要key一次鑑要按一次enter,無法把座標一次輸入完
想詢問各位大大,有什麼方法嗎?
會員登入
(先登入會員才能回覆留言喔!)
