从用户整数输入c ++中拒绝某个值

时间:2017-10-15 16:36:46

标签: c++

我最近开始学习C ++,到目前为止我开始学习 无论如何我想要的数据验证 如果用户输入,该程序将拒绝整数 所述整数包含1或0,例如1234,0222 所以我想到了它并提出了下面的代码。 但是我现在在这个特定的行中面临一个问题

while(temp> 0)

如果我拒绝任何其他数字说2,3,4会有用 但既然我想拒绝0,那就变得不合逻辑了。 我应该如何更改条件以便0拒绝并要求用户再次输入?

编辑:我设法在整数中间拒绝0或1,例如234152,234013

但是,如果用户输入0234

,我无法拒绝
#include <iostream>


using namespace std;

int main ()
{

int n, temp, temp2 ,counter;
bool check = false;
counter = 0;
do
{
    check = false;                                          

    cout << "Enter a positive integer: ";
    cin >> n;

    temp = n;                                               
    temp2= n;

    while (!check && n > 0 )                                 
    {
        if( n % 10 ==1 || n % 10 == 0)
        {
            check = true;
        }

        else
            n = n/ 10;

    }


}

while(check == true || n < 0);

2 个答案:

答案 0 :(得分:1)

我不认为这是做你想做的事情的最佳方式。话虽如此,这是解决问题的快捷方法。在while循环之后添加一个if语句。

if(temp==0)

分别处理零案例。

答案 1 :(得分:1)

1)将while (temp %10 == 1 || temp % 10 == 0)更改为if (temp %10 == 1 || temp % 10 == 0)

2)check do while循环中不得为1,或将其类型更改为bool

这是代码:

int main()
{
    int n, temp;
    bool check = false;
    do
    {
        cout << "Enter a positive integer: ";
        cin >> n;
        temp = n;
        check = false;
        while (temp >= 0) // changed here
        {
            if (temp % 10 == 1 || temp % 10 == 0)
            {
                check = true;
                break;
            }
            temp = temp / 10;
        }
    }
    while (check);
    return 0;
}