我正在尝试编写一个简单的程序来打印出山形的星星。它的工作原理是获取用户输入宽度并打印星数,直到达到指定的宽度。打印完的代码的主要部分已完成。但是,我在尝试确保输入的数字是奇数时遇到问题。如果数字是偶数,则该函数应该继续要求用户输入另一个数字,直到他们输入一个奇数。
代码的相关部分:
int rowsinput;
cout << "Enter an odd number width: ";
cin >> rowsinput;
if (rowsinput % 2 == 0)
{
cout << "Please enter an odd number width: ";
}
else
如果有人要我发布整个代码,请发表评论。
答案 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;
}