这段代码如何改进,使其更健壮,能处理无效的年龄输入?
时间: 2024-10-06 20:03:26 浏览: 46
要让这段代码更健壮,可以加入一些错误处理机制,特别是在处理年龄输入时。可以使用循环来持续获取输入直到得到有效的整数。以下是改进后的代码:
```cpp
#include <iostream>
#include <limits> // 引入用于检查数值范围的库
using namespace std;
bool is_valid_age(int age) {
return age >= 0; // 简单的检查,防止负数输入,实际应用可能需要更复杂的验证规则
}
void input_age() {
int age;
while (!is_valid_age(age)) {
cout << "输入的年龄无效,请输入一个非负整数: ";
cin >> age;
if (cin.fail()) { // 检查是否输入了非数字字符
cin.clear(); // 清除输入流状态
cin.ignore(numeric_limits<streamsize>::max(), '\n'); // 忽略错误字符
cout << "无效输入,请重新输入." << endl;
}
}
return age;
}
int main() {
string name;
int age = input_age();
// 根据年龄分类并打印信息
if (age <= 12) {
cout << "年龄分类: 儿童" << endl;
} else if (age >= 13 && age <= 18) {
cout << "年龄分类: 青少年" << endl;
} else {
cout << "年龄分类: 成人" << endl;
}
// 打印表格
printf("姓名\t年龄\nclass\n");
printf("%s\t%d\n", name.c_str(), age);
return 0;
}
```
现在,如果用户输入无效的年龄或者不是整数,程序会提示错误并要求用户重新输入。这使得代码更具健壮性和用户体验。
阅读全文