程序如下:
#include <iostream>
using namespace::std;
int main(){
char action;
int i; while(1){
cout<<"Please select a item:\n";
cout<<"a"<<"\n";
cout<<"b"<<"\n";
cout<<"c"<<"\n"; cin.getline(&action,'\n');
switch(action){
case 'A' : case 'a' :
cout<<"you enter a number"<<endl;
cin>>i;
if(!cin||i<0){
"Please input number!";
return 0;////
}
else{
cout<<"The number is "<<i<<endl;
cin.get(action);
}
break; case 'B' : case 'b' :
cout<<"you enter B"<<endl;
break; case 'C' : case 'c' :
cout<<"you enter C"<<endl;
break;

default  :
cout << "Invalid selection" << "\n";
}
}
return 0;}
问题1:当输入多个字符,如“AFHH",它只匹配第一个字母A,如何按定长判断或者把输入长度限制在一个字符内?我试着把getline 写成cin>>getline(action,1,'\n'),这样会照成死循环。2。在case A段,如果输入的不是数字我做了判断,但我不想退出程序,想继续进行操作,如何解决呢?只能用goto语句??各位好汉,紧急求助!!

解决方案 »

  1.   

    问题2的回答:
    老兄,你可以设置一个标志flag,在输入错误的时候改变它的值,使得while循环进行,继续输入数字!如果输入成功,你就停止while 循环,下面是修改后的程序,你看看行不行:)         int flag;
             flag=0;  
          do{
             case 'A' : case 'a' :
    cout<<"you enter a number"<<endl;
    cin>>i;
    if(!cin||i<0){
            "Please input number!";
    flag=1;
    }
    else{
    cout<<"The number is "<<i<<endl;
    cin.get(action);
                      flag=0;
    }
           }
             while(flag);
    break;