如何在 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 &gt;&gt; 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++ 中检查二维数组中负值的输入验证?的主要内容,如果未能解决你的问题,请参考以下文章

要求用户在 2d 数组时输入 1 行的值

如何从文本文件中获取值并输入到二维数组中? C++

c++ 用户输入 2个值 定义二维数组 但是报错

C语言中如何将二维字符数组作为函数参数引用传递

如何在 C++ 中使用 std::stoi() 验证 int 输入?

如何在 C++ 中检查用户输入