c++:处理输入

C++ : Handling input

本文关键字:输入 处理 c++      更新时间:2023-10-16
char d;
do
{
    cout<<"1.Easyn";
    cout<<"2.Mediumn";
    cout<<"3.Hardn";
    cout<<"Choose your difficulty:";
    cin>>d;
    if (d=='1')
    {
        //function call
        break;
    }
    else
    if (d=='2')
    {
        //function call
        break;
    }
    else
    if (d=='3')
    {
        //function call
        break;
    }
    else
        cout<<"Invalid Input!n";
}while (d=='1' || d=='2' || d=='3') ;

以上代码一直运行,直到d的值为1、2或3。

但是,当我输入一个字母,如"e",它不显示"invalid input"消息。相反,将退出循环并显示空白屏幕。有人知道为什么会这样吗?

仅当d == '1', '2'或'3'时才进行循环。您需要检查以确保它不是这些字符之一。这可以通过对代码进行以下调整来实现:

char d;
do
{
..........
}while ( ! (d=='1' || d=='2' || d=='3') ) ;

希望这对你有帮助。

如果在每个有效情况下都有break,则不需要检查while条件下d的值:

while (true) {
        cout << "1.Easyn";
        cout << "2.Mediumn";
        cout << "3.Hardn";
        cout << "Choose your difficulty:";
        cin >> d; 
        if (d == '1') {
                a.setdifficulty("Easy");
                break;  
        }       
        else if (d == '2') {
                a.setdifficulty("Medium");
                break;  
        }       
        else if (d == '3') {
                a.setdifficulty("Hard");
                break;  
        }       
        else    
                cout << "Invalid Input!n";
}

当d的值为'1'或'2'或'3'时,循环执行。要执行循环,直到它接受有效的输入,只需更改条件,如下代码

char d;
do
{
    cout<<"1.Easyn";
    cout<<"2.Mediumn";
    cout<<"3.Hardn";
    cout<<"Choose your difficulty:";
    cin>>d;
    if (d=='1')
    {
        a.setdifficulty("Easy");
        break;
    }
    else
    if (d=='2')
    {
        a.setdifficulty("Medium");
        break;
    }
    else
    if (d=='3')
    {
        a.setdifficulty("Hard");
        break;
    }
    else
        cout<<"Invalid Input!n";
}while (d!='1' && d!='2' && d!='3') ;

这是您需要的代码......您的代码将始终执行一次.....对于输入1、2、3,跳出look,在无效输出的情况下,while循环中的条件不匹配.....

do
{
    cout<<"1.Easyn";
    cout<<"2.Mediumn";
    cout<<"3.Hardn";
    cout<<"Choose your difficulty:";
    cin>>d;
    if (d=='1')
    {
        cout<<"Easy";
        break;
    }
    else
        if (d=='2')
        {
            cout<<"DIFF";
            break;
        }
        else
            if (d=='3')
            {
                cout<<"Hard";
                break;
            }
            else
                cout<<"Invalid Input!n";
}while (d!='1' || d!='2' || d!='3') ;