我在C ++中的while循环之前遇到了2个cins的问题。我希望他们两者都只取大于0的数字。问题是如果我给r一个不是数字的值,这就是:
int r;
int h;
cout << "Radius: ";
cin >> r;
cout << "Height: ";
cin >> h;
while (cin.fail() || !(r > 0) || !(h > 0)) {
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
if (!(r > 0)) {
cout << "Wrong radius. Input a number bigger than 0.\nRadius: ";
cin >> r;
}
else {
cout << "Wrong height. Input a number bigger than 0.\nHeight: ";
cin >> h;
}
(它不会在循环之前询问h的值)。对于负数,它很好,如果我将半径设为-1,程序将无法在获得高度值之前循环。
这是我的代码:
{{1}}