我正在研究一個簡短的項目,其目標是創建一個計算淨工資的程序。用戶將輸入他們的姓名,工作時間和薪資。我必須使用Properties而不是構造函數來接收數據。應該有兩個類別; Main類和我稱爲Pay的類,它將執行計算並使用override ToString()方法來顯示結果(使用string.format命令)。C#如何在2個類中引用/使用/設置對象/實例的值
我有一個問題,程序能夠顯示人員姓名,工作時間以及工資率(所有這些都是用戶輸入的)。但是,其他一些變量顯示爲「0」。我也無法弄清楚如何設置這些變量,以便它們是我在Main類中創建的對象「aPay」的實例。
我應該將這些變量設置爲Main類或Pay類中的aPay對象的實例嗎?如果是這樣,我該怎麼做呢?在過去一個小時裏我一直在嘗試一些事情,或者試圖弄清楚這一點,甚至參考了上週我作爲一項任務所做的類似計劃,但我似乎無法圍繞這一概念及其正確性實現。
我會在下面發表我的代碼,任何幫助和解釋將真誠讚賞。
class MainClass
{
public static void Main(string[] args)
{
Header();
Directions();
Pay aPay = new Pay();
Write("**********************************\n");
Write("Enter name: ");
aPay.WorkerName = ReadLine();
Write("Enter hours: ");
aPay.HoursWorked = double.Parse(ReadLine());
Write("Enter rate: ");
aPay.RateOfPay = double.Parse(ReadLine());
Write("**********************************\n");
WriteLine(aPay.ToString());
}
private static void Header()
{
WriteLine("*************************************************************");
WriteLine("\t Pay");
WriteLine("\t Calculate Net Pay");
WriteLine("\t Matt Craig");
WriteLine("\t " + DateTime.Today);
WriteLine("*************************************************************");
}
private static void Directions()
{
WriteLine("This program will determine pay.");
WriteLine(" ");
WriteLine("You will be asked to enter hours worked"
+ "\n and rate of pay");
WriteLine(" ");
WriteLine("*************************************************************");
}
}
這是主類,我會後下面的薪酬等級:
public class Pay
{
private string workerName;
private double hoursWorked;
private double rateOfPay;
private double grossPay;
private double netPay;
private double FICA_TAX = 0.0765;
private double FED_TAX = 0.20;
private double STATE_TAX = 0.10;
private double HEALTH_INS = 0.07;
private double ficaTax;
private double fedTax;
private double stateTax;
private double healthIns;
public Pay()
{
/* Pay aPay = new Pay();
aPay.grossPay = grossPay;
aPay.netPay = netPay;
aPay.ficaTax = ficaTax;
aPay.fedTax = fedTax;
aPay.stateTax = stateTax;
aPay.healthIns = healthIns; */
}
public string WorkerName
{
set
{
workerName = value;
}
}
public double HoursWorked
{
set
{
hoursWorked = value;
}
}
public double RateOfPay
{
set
{
rateOfPay = value;
}
}
public double GrossPay
{
get
{
grossPay = (hoursWorked * rateOfPay);
return grossPay;
}
}
public double NetPay
{
get
{
netPay = grossPay - FICA_TAX - FED_TAX - STATE_TAX - HEALTH_INS;
return netPay;
}
}
public double FicaTax
{
get
{
ficaTax = FICA_TAX * grossPay;
return ficaTax;
}
}
public double FedTax
{
get
{
fedTax = FED_TAX * grossPay;
return fedTax;
}
}
public double StateTax
{
get
{
stateTax = STATE_TAX * grossPay;
return stateTax;
}
}
public double HealthIns
{
get
{
healthIns = HEALTH_INS * grossPay;
return healthIns;
}
}
public override string ToString()
{
string stats;
stats = string.Format("Name\t\t {0} \n", workerName);
stats += string.Format("Gross Pay\t {0} \n", grossPay);
stats += string.Format("FICA tax\t {0} \n", ficaTax);
stats += string.Format("Federal tax\t {0} \n", fedTax);
stats += string.Format("State tax\t {0} \n", stateTax);
stats += string.Format("Health Insurance {0} \n", healthIns);
stats += string.Format("Net pay\t\t {0} \n", netPay);
return stats;
}
}
非常感謝你的回答。我可以發誓我已經嘗試過,但我可能沒有,或者我可能在我編寫程序的早期階段嘗試過。你一直很有幫助! – Snags
這些值不是aPay對象的實例,對嗎?我是否需要將用戶輸入的WorkerName,HoursWorked和RateOfPay值分配給aPay?如果是這樣,Pay類中僅包含aPay實例的其他值嗎? (grossPay,ficaTax,fedTax,stateTax,healthIns,netPay) – Snags
如果是這樣,我可以做類似於這樣的事情:Write(「Enter name:」); aPay.WorkerName = ReadLine();到僅包含在Pay類中的非用戶輸入變量,使它們成爲aPay對象的實例? – Snags