如何在 C++ 中检查二维数组中负值的输入验证?
Posted
技术标签:
【中文标题】如何在 C++ 中检查二维数组中负值的输入验证?【英文标题】:How can I check input validation for negative values in a 2D array in C++? 【发布时间】:2020-07-13 17:05:51 【问题描述】:这里只是一个简单的问题。我正在尝试检查输入验证的负值,我希望我的程序只接受用户输入的正值,这是我的代码。
//loop to array.
for(int i = 0; i < 3; i++) //loop to row first
//take in input into data.
for(int j = 0; j < 5; j++) //loop to column
//take input data.
cout <<"Monkey " << i+1 <<" ";
cout <<"Day " << j +1 << ":";
cin >> pound_food[i][j];
if(pound_food[i][j] < 0)
cout <<"Invalid number, number can't be negative, please try again\n";
break;
当他们找到负数时,我尝试打破循环或继续,但是即使我不希望将负数存储在数组中,它也会继续存储数字。我只希望它只存储正整数并重新提示用户再次输入数字。不知道为什么,希望听听大家的意见!
【问题讨论】:
您将数字存储在数组中,然后检查符号。cin >> pound_food[i][j];
-- 是不是有点太晚了,因为你已经用你不想存储的值弄乱了二维数组?如何将输入存储在一个临时变量中,检查它,如果没问题,然后将它存储在二维数组中?
啊我试试看,谢谢你的建议!
我是关于临时变量的代码,然后我看到了 Paul 的评论 :) 无论如何,@ Verax11 如果你喜欢人们的回答,你可以给他们投票,选择其中一个作为真正的答案等。
【参考方案1】:
如果您遇到负数,那么您可以减少列索引j
而不是将break
退出整个列循环。这样,下一个数字将插入到刚刚插入负数的相同位置:
if(pound_food[i][j] < 0)
cout <<"Invalid number, number can't be negative, please try again\n";
--j; // instead of break
【讨论】:
我明白了,我不知道你可以做这样的事情。谢谢!!!【参考方案2】:另一种解决方案是编写一个内部while
循环,直到输入正常为止:
for(int j = 0; j < 5; j++) //loop to column
//take input data.
cout <<"Monkey " << i+1 <<" ";
cout <<"Day " << j +1 << ":";
bool ok = false;
while (!ok)
cin >> pound_food[i][j];
if(pound_food[i][j] < 0)
cout <<"Invalid number, number can't be negative, please try again\n";
else
ok = true;
或者:
for(int j = 0; j < 5; j++) //loop to column
//take input data.
cout <<"Monkey " << i+1 <<" ";
cout <<"Day " << j +1 << ":";
while (true)
cin >> pound_food[i][j];
if(pound_food[i][j] < 0)
cout <<"Invalid number, number can't be negative, please try again\n";
else
break;
【讨论】:
感谢您的提示!我不知道你可以做这样的事情哈哈。谢谢!以上是关于如何在 C++ 中检查二维数组中负值的输入验证?的主要内容,如果未能解决你的问题,请参考以下文章