【问题标题】:How can I check input validation for negative values in a 2D array in C++?如何在 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 &gt;&gt; pound_food[i][j]; -- 是不是有点太晚了,因为你已经用你不想存储的值弄乱了二维数组?如何将输入存储在一个临时变量中,检查它,如果没问题,然后将它存储在二维数组中?
  • 啊我试试看,谢谢你的建议!
  • 我是关于临时变量的代码,然后我看到了 Paul 的评论 :) 无论如何,@ Verax11 如果你喜欢人们的回答,你可以给他们投票,选择其中一个作为真正的答案等。

标签: c++ arrays


【解决方案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;
  }
}

【讨论】:

  • 感谢您的提示!我不知道你可以做这样的事情哈哈。谢谢!
猜你喜欢
  • 1970-01-01
  • 2017-02-10
  • 1970-01-01
  • 1970-01-01
  • 2014-02-13
  • 1970-01-01
  • 2017-03-15
  • 1970-01-01
  • 2013-01-10
相关资源
最近更新 更多