如果我理解正確你的問題,你想知道,如果它是更好地從一個文本文件中讀取「作業類」或者提示用戶輸入,是這樣嗎?我認爲這取決於你的應用程序的性質,如果你的應用程序是一個交互式應用程序,提示用戶輸入是最好的方式,但如果你的應用程序不是一個交互式應用程序,那麼我會說你的選擇應該由您的應用將處理的「作業類別」輸入的數量 - 如果您處理的是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