首页 > 解决方案 > 如何在 C++ 中检查二维数组中负值的输入验证?

问题描述

这里只是一个简单的问题。我正在尝试检查输入验证的负值,我希望我的程序只接受用户输入的正值,这是我的代码。

  //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;
      }

    }

当他们找到负数时,我尝试打破循环或继续,但是即使我不希望将负数存储在数组中,它也会继续存储数字。我只希望它只存储正整数并重新提示用户再次输入数字。不知道为什么,希望能听听大家的意见!

标签: c++arrays

解决方案


如果遇到负数,则不必break退出整个列循环,只需减少列索引即可j。这样,下一个数字将插入到刚刚插入负数的相同位置:

if(pound_food[i][j] < 0)
{
    cout <<"Invalid number, number can't be negative, please try again\n";
    --j;  // instead of break
}

推荐阅读