如果我理解正确你的问题,你想知道,如果它是更好地从一个文本文件中读取“作业类”或者提示用户输入,是这样吗?我认为这取决于你的应用程序的性质,如果你的应用程序是一个交互式应用程序,提示用户输入是最好的方式,但如果你的应用程序不是一个交互式应用程序,那么我会说你的选择应该由您的应用将处理的“作业类别”输入的数量 - 如果您处理的是100个输入,则输入它们将是单调乏味的,从文件中读取这些输入将是最好的方法。
代码方面,提示用户输入并读取用户响应的代码看起来不错,但容易出错,如果用户输入无效“作业类别”表示用户输入浮点数或者你的代码行为的一堆字符将是未定义的。相反的CIN,可以考虑使用函数getline()读取输入作为一个字符串,然后喂字符串istringstream然后提取你正在寻找从istringstream对象
int getJobClass()
{
int Job_Class;
string input;
bool inputValid = false;
while(!inputValid)
{
cout << "Please Enter Job Class";
getline(cin, input);
istringstream inputParser(input);
if (!(inputParser >> Job_Class))
{
cout << "Invalid Job Class Input!" <<endl;
inputValid = false;
}
else
{
inputValid = true;
}
}
return Job_Class;
}
一旦上述就位的输入,计算“基本工资”,你可以做这样的事情:
float getPayMultiplier(int Job_class)
{
float multiplier = 1;
switch (Job_class)
{
case 1:
multiplier = 0.10;
break;
case 2:
multiplier = 0.15;
break;
case 3:
multiplier = 0.20;
break;
default:
cout << "Invalid Job_Class" << endl;
break;
}
return multiplier;
}
float computeBasePay(float pay)
{
return pay + (pay * getPayMultiplier(getJobClass()));
}
有很多方法可以做到这一点,你的方式很好,如果这是你想要做到这一点。一些可能的方法是:如果语句,切换案例,地图等 – CoryKramer
我不确定我有你的问题,但是,这看起来很好。 – keyser
小心那些括号/圆括号...... – CoryKramer