【发布时间】:2015-04-09 18:32:39
【问题描述】:
我正在做一个项目,该项目需要我将 20-101 的 5 个数字输入到我的一维数组中。之后,它会显示这 5 个数字的输出。如果输入非数字/浮点数/重复/超出范围,则拒绝这些并要求用户再次输入。我必须try and catch进入我的代码。此外,该程序能够在最后显示 bad 输入。到目前为止,我遇到了什么并被卡住了,我完全迷失了。
检查超出范围的数字
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++初学者,请帮帮我!
【问题讨论】:
-
问题 1,您在为其赋值之前检查
number(除了零的初始化)。因此,您将立即跳入else块,number等于零。 -
也许this Q&A 正在给你一些提示,如何去做。
-
你们能在代码上给我解释一下吗?我是新人,我很难这么说。请!谢谢!
-
问题在于代码存在多个问题。如果不为您写下全部内容,很难指出所有内容并解释为什么这里是错误的。
标签: c++ arrays duplicates try-catch