当尝试输入诸如以下内容时:
Please enter the number of elements: 4
Enter the list to be sorted: 4 x3 1 6
我得到的输出是:
The sorted list is:error: invalid input
我该如何做,以便如果有错误,仅执行错误无效的输入语句,反之亦然?
#include <iostream>
using namespace std;
int main()
{
int a[50], n, i, j, temp;
cout << "Please enter the number of elements:";
cin >> n;
cout << endl;
cout << "Enter the list to be sorted:";
cout << endl;
if (cin >> n)
{
for (i = 0; i < n; ++i)
cin >> a[i];
for (i = 1; i < n; ++i)
{
for (j = 0; j < (n - i); ++j)
if (a[j] > a[j + 1])
{
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
cout << "The sorted list is:";
for (i = 0; i < n; ++i)
cout << " " << a[i];
}
else (!(cin >> n));
{
cout << "error: invalid input" << endl;
}
return 0;
}
答案 0 :(得分:0)
您正在从n
阅读cin
两次。在对if
的{{1}}测试中,您应该只检查cin
,即
cin
第二个问题是您的else块
`if (cin)`
尽管格式化了
else (!(cin >> n));
{
cout << "error: invalid input" << endl;
}
我想else
{
// 'n' read from cin, return value negated and discarded
(!(cin >> n))
}
// always executed
cout << "error: invalid input" << endl;
应该在评论中
cin
答案 1 :(得分:0)
您可以执行类似的操作来进行错误检查。
1)要求用户在获取尺寸后输入数字。 2)首先将这些数字存储为字符,然后使用isdigit()函数检查用户输入是否正确。
{{route('ruangjn-edit', ['ruangjn' => $data->id])}}
3)如果输入的数字正确,请转换这些字符并将它们存储在数组中。
希望这会有所帮助。