重复输入请求

时间:2015-10-07 01:45:12

标签: c++

我正在尝试编写一个简单的程序来打印出山形的星星。它的工作原理是获取用户输入宽度并打印星数,直到达到指定的宽度。打印完的代码的主要部分已完成。但是,我在尝试确保输入的数字是奇数时遇到问题。如果数字是偶数,则该函数应该继续要求用户输入另一个数字,直到他们输入一个奇数。

代码的相关部分:

int rowsinput;

cout << "Enter an odd number width: ";
cin >> rowsinput;

if (rowsinput % 2 == 0)
{
    cout << "Please enter an odd number width: ";
}
else

如果有人要我发布整个代码,请发表评论。

3 个答案:

答案 0 :(得分:1)

你可以使用类似的东西:

int rowsinput;
do{
  cout << "Enter an odd number width: ";
  cin >> rowsinput; 
}while(rowsinput % 2 == 0)

答案 1 :(得分:0)

考虑作为替代

while (!(cin >> rowsinput) ||  // bad, non-parsable input
       (rowsinput % 2 == 0) || // even number
       (rowsinput  < 0))       // negative number
{
    cout << "Please enter an odd number width: ";
    cin.ignore(numeric_limits<streamsize>::max(), '\n');
    cin.clear();
}
// input is good. Carry on with rest of program

这将循环,直到用户提供有效整数,该整数为奇数,并且整数为正。如果不满足任何这些条件,将提示用户输入更多内容,丢弃所有当前(错误)输入,并清除输入流上的任何错误条件。

编辑:

需要额外的#include <limits>来获取忽略调用中的数字限制。

答案 2 :(得分:0)

在while循环中添加 cin 语句,如下所示:

String s=" 10 10 15 5 ";
long repetitions = s.split(" 10 ").length -1;

您的最终代码如下:

while(rowsinput % 2 ==0)
{
    cout << "Please enter an odd number width: ";
    cin >> rowsinput;
}