我正在开展一个项目,要求我将20-101中的5个数字输入到我的一维数组中。之后,它会显示这5个数字的输出。如果输入非数字/浮点数/重复/输出范围,请拒绝这些并请求用户再次输入。我必须尝试捕捉到我的代码中。此外,该程序能够在最后显示错误输入。到目前为止我得到的东西被困住了,我完全迷失了。
检查超出范围的数字
int ArrayReader::checkInput(int number)
{
if (number >= 20 && number <= 101)
{
return number;
}
else
{
throw invalid_argument("Out-range-number entered");
}
}
主要代码
#include <iostream>
#include <stdexcept>
#include <iomanip>
#include "ArrayReader.h"
using namespace std;
int main()
{
ArrayReader value;
int number = 0;
int dup;
int Array[5];
int currentArray = 0;
cout << "Enter Number from 20 - 101: ";
for (int i = 0; i < 5; i++)
{
cin >> number;
dup = 0;
if (number >= 20 && number <= 101)
{
for (int value = 0; value < currentArray; value++)
{
if (number == Array[value])
{
dup == true;
dup = 1;
cout << "Number " << number << " already used. Try again";
break;
}
}
if (dup == false)
{
Array[currentArray++] = number;
i++;
}
}
else
{
try
{
int result = value.checkInput(number);
cout << "Valid Input: " << number << endl;
}
catch (invalid_argument &x)
{
cout << "Error: "
<< x.what() << endl;
}
}
}
for (int i = 0; i < 5; i++)
{
cout << "Valid numbers entered" << " " << Array[i] << endl;
}
}
我的问题是:
目前,当我运行该程序时,它不允许我输入所有5个数字(仅3个)。它检查了重复的数字和超出范围的数字。输出是奇怪的数字链
- 醇>
我不知道如何拒绝非数字输入和浮动数字。
我是C ++的初学者,请帮助我!
答案 0 :(得分:0)
为调试改变你的功能:
int ArrayReader::checkInput(const int& number)
{
cout << '\n checkInput number: ' << number << '\n';
if (number >= 20 && number <= 101)
{
return number;
}
else
{
throw invalid_argument("Out-range-number entered");
}
return -1;
}
答案 1 :(得分:0)
您可以使用cin.fail()
检查有效整数
int input;
cin >> input;
while(!cin.fail())
{
cin.clear();
cin.ignore(256,'\n');
cin.input();
}
这只是你任务的一部分。在初始number
之后,您不会将任何值分配给int number = 0
。您的变量名称为ArrayReader value
和for(int value = 0;...)
。
这也是不正确的
dup == true; // equality
这些只是通过浏览代码我可以看到的一些错误。使用调试器检查变量是否按预期分配值。
答案 2 :(得分:0)
我稍微更改了你的代码。首先,我应该说必须改进以下代码。
#include <iostream>
using namespace std;
int main()
{
int number = 0;
bool isDuplicate = false;
int Array[5];
int arraySize = 0;
cout << "Enter Number from 20 - 101: ";
while(arraySize < 5)
{
try{
cin >> number;
isDuplicate = false;
if (number >= 20 && number <= 101)
{
for (int j = 0; j < arraySize; j++)
{
if (number == Array[j])
{
isDuplicate = true;
throw "Number is already used. Try again";
}
}
if (isDuplicate == false)
{
Array[arraySize] = number;
arraySize++;
}
}
else
{
throw "Error";
}
}
catch (char* err)
{
cout << err << endl;
}
}
for (int i = 0; i < 5; i++)
{
cout << "Valid numbers entered" << " " << Array[i] << endl;
}
char c;
cin >> c;
}
for(int i = 0, i < 5; i++)