C# 输出不能显示构造函数,但可以显示默认构造函数
下面的代码将显示所有内容。 我可以在默认构造函数上显示。 不幸的是,我无法获得显示员工ID号和付款的任何结果。 我在编写代码时没有遇到任何错误。 因此,我完全不知道C# 输出不能显示构造函数,但可以显示默认构造函数,c#,C#,下面的代码将显示所有内容。 我可以在默认构造函数上显示。 不幸的是,我无法获得显示员工ID号和付款的任何结果。 我在编写代码时没有遇到任何错误。 因此,我完全不知道 //class for FullTimeEmployee namespace EmPloyee { public class FullTimeEmployee //object { private string FEmployeeFName, FEmployeeLName; private double FEmpl
//class for FullTimeEmployee
namespace EmPloyee
{
public class FullTimeEmployee //object
{
private string FEmployeeFName, FEmployeeLName;
private double FEmployeeID;
private double FEmployeeWorkHour;
private const double FEmployeePayRate = 20.00;
private double GrossPay, RegPay, OTPay;
//No Args Constructor, Default Constructor
public FullTimeEmployee()
{
FEmployeeFName = "Arthur";
FEmployeeLName = "Chen";
FEmployeeID = 1000;
FEmployeeWorkHour = 60;
RegPay = calcRegPay();
OTPay = CalOTPay();
}
//Constructor
public FullTimeEmployee(string FFName, string FLName, double FID, double FHours)
{
FEmployeeFName = FFName;
FEmployeeLName = FLName;
FID = FEmployeeID;
FEmployeeWorkHour = FHours;
//FEmployeePayRate = FPRate;
}
//Accessor Methods
//get name
public string GetFName()
{
return FEmployeeFName + " " + FEmployeeLName;
}
//get ID
public double getID()
{
return FEmployeeID;
}
//get Payrate
public double getPayRate()
{
return FEmployeePayRate;
}
//get hours
public double getHours()
{
return FEmployeeWorkHour;
}
//**********************************
//******Calculate GrossPay**********
//**********************************
//Calculate RegularPay
private double calcRegPay()
{
double RegPay;
if (FEmployeeWorkHour >= 0 && FEmployeeWorkHour <= 38)
{
RegPay = FEmployeeWorkHour * FEmployeePayRate;
}
else
{
RegPay = 38 * FEmployeePayRate;
}
return RegPay;
}
//get Regular Pay
public double getRegPay()
{
return RegPay;
}
//calculate OverTime Pay
private double CalOTPay()
{
double OTPay;
if (FEmployeeWorkHour >= 0 && FEmployeeWorkHour <= 38)
{
OTPay = 0;
}
else
{
OTPay = (FEmployeeWorkHour - 38) * FEmployeePayRate * 1.5;
}
return OTPay;
}
//get OTPay
public double getOTPay()
{
return OTPay;
}
//get Gross Pay
public double getGrossPay()
{
return GrossPay = RegPay + OTPay;
}
} //end FullTimeEployee Class
} //end Name Space
//Employee Driver
namespace EmPloyee
{
class EmployeeDriver
{
static void Main(string[] args)
{
//switch
char Response;
Response = 'X';
String Question= "Select F or f if you want to Create a Full Time Employee\n"
+ "Or P or p to create a Part-Time Employee";
Console.WriteLine(Question);
String inputS =Console.ReadLine();
Response=Convert.ToChar(inputS.Substring(0,1));
switch (Response)
{
case 'F': case 'f':
CreateFullTime();
break;
case 'P': case 'p':
// CreatePartTime();
break;
} //end Switch
Console.WriteLine("Hit Any Key to Exit");
Console.ReadLine();
} //end main
public static void CreateFullTime()
{ //get output for default constructor
FullTimeEmployee myFT;
myFT = new FullTimeEmployee();
//outputing with formatted strings
Console.WriteLine("Full Time Employee's First Name: " + myFT.GetFName());
Console.WriteLine("Full Time Employee's ID: " + myFT.getID());
Console.WriteLine("Full Time Employee's Hour: " + myFT.getHours().ToString("n2"));
Console.WriteLine("Full Time Employee's PayRate: " + myFT.getPayRate().ToString("C2"));
Console.WriteLine("Full Time Employee's Regular Pay: " + myFT.getRegPay().ToString("C2"));
Console.WriteLine("Full Time Employee's Over Time Pay: " + myFT.getOTPay().ToString("C2"));
Console.WriteLine("Full Time Employee's Net Pay: " + myFT.getGrossPay().ToString("C2"));
//some temporary variables
string LN = " ", FN = " ";
double FId = -8888;
double FHrs = -10;
// bool checkFN=false;
bool CheckID = false;
bool CheckHour = false;
Console.WriteLine("Enter Your First Name");
FN = Console.ReadLine();
//do //get information for first name
//{
// try
// {
// FN = Console.ReadLine();
// }
// catch (FormatException fmte)
// {
// Console.WriteLine(fmte.Message);
// // flag = true;
// }
// if (FN = " ")
// {
// Console.WriteLine("Please Enter a Valid Name");
// // flag = true;
// }
//} while (FN = " ");
Console.WriteLine("Enter Your Last Name");
LN = Console.ReadLine();
//input the correct ID number
//Console.WriteLine("Enter Your ID Number");
do
{
try
{
Console.WriteLine("Enter Your ID Number");
string inputid = Console.ReadLine();
FId = double.Parse(inputid);
// FId = double.Parse(Console.ReadLine());
}
catch (FormatException fmte)
{
Console.WriteLine(fmte.Message);
}
if (FId >= 1001 && FId <= 9999)
{
CheckID = true;
}
else
{
Console.WriteLine("ID Number Must Be 4 Digit Number "
+ "and greater than 1000");
}
} while (!CheckID);
//Enter workhous
do
{
try
{
Console.WriteLine("Enter Hours");
string inputhr = Console.ReadLine();
FHrs = double.Parse(inputhr);
}
catch (FormatException fmte)
{
Console.BackgroundColor = ConsoleColor.Red;
Console.WriteLine("Dude\n"
+ "It is NOT a Legic Number!!" + fmte.Message);
}
if (FHrs > 0 && FHrs <= 65)
{
CheckHour = true;
}
else
{
Console.WriteLine("Please Enter a Positive Number\n"
+ "And the maxmium number is 65!!!");
}
} while (!CheckHour);
FullTimeEmployee YrFT;
YrFT = new FullTimeEmployee(FN, LN, FId, FHrs);
//outputing
Console.WriteLine("FT Employee's Name: " + YrFT.GetFName());
Console.WriteLine("FT Employee's ID: " + YrFT.getID());
Console.WriteLine("FT Employee's Hours: " + YrFT.getHours().ToString("n2"));
Console.WriteLine("FT Employee's Pay Rate: " + YrFT.getPayRate().ToString("c2"));
Console.WriteLine("FT Employee's Regular Pay: " + YrFT.getRegPay().ToString("C2"));
Console.WriteLine("FT Employee's Over Time Pay: " + YrFT.getOTPay().ToString("C2"));
Console.WriteLine("FT Employee's Net Pay: " + YrFT.getGrossPay().ToString("c2"));
}
}
}
//全职员工的课程
命名空间雇员
{
公共类FullTimeEmployee//对象
{
私有字符串FEmployeeFName,FEmployeeLName;
私人双女性;
私人双倍工作时间;
私人建筑双倍女职工工资率=20.00;
私人双人GrossPay、RegPay、OTPay;
//无参数构造函数,默认构造函数
公共全职雇员()
{
FEmployeeFName=“亚瑟”;
FEmployeeLName=“Chen”;
FEmployeeID=1000;
FEmployeeWorkHour=60;
RegPay=calcRegPay();
OTPay=CalOTPay();
}
//建造师
公共全职员工(字符串FFName、字符串FLName、双FID、双FHours)
{
FEmployeeFName=FFName;
FEmployeeLName=FLName;
FID=FEmployeeID;
FEmployeeWorkHour=f小时;
//FEmployeePayRate=FPRate;
}
//存取器方法
//得名
公共字符串GetFName()
{
返回FEmployeeFName+“”+FEmployeeLName;
}
//取得身份证
公共双getID()
{
返回FEmployeeID;
}
//领取工资
公共双getPayRate()
{
返回工资率;
}
//上班时间
公共双小时
{
返回FEmployeeWorkHour;
}
//**********************************
//******计算毛额**********
//**********************************
//计算固定工资
私人双卡支付()
{
双薪制;
如果在带参数的构造函数中(FEmployeeWorkHour>=0&&FEmployeeWorkHour=0&&FEmployeeWorkHour=1001&&FId 0&&FHrs,则会注释掉支付率。在无参数构造函数中,会计算支付率,但不会调用此构造函数,因为会调用4-args构造函数
员工ID位于等号的错误一侧。您正在使用字段FEmployeeID
中的任何内容重新分配输入变量FID
的值
请尝试以下方法:
// Constructor
public FullTimeEmployee(string FFName, string FLName, double FID, double FHours, double FPRate)
{
FEmployeeFName = FFName;
FEmployeeLName = FLName;
FEmployeeID = FID;
FEmployeeWorkHour = FHours;
FEmployeePayRate = FPRate;
}
请注意,构造函数中的所有参数都位于等号的右侧
另一个选项是,如果您想让无参数构造函数从4-(哦,5-)参数构造函数中插入默认值,您可以让4/5-args构造函数在声明末尾使用this()
调用无参数构造函数
// Constructor
public FullTimeEmployee(string FFName, string FLName, double FID, double FHours, double FPRate)
: this()
{
FEmployeeFName = FFName;
FEmployeeLName = FLName;
FEmployeeID = FID;
FEmployeeWorkHour = FHours;
FEmployeePayRate = FPRate;
}
课堂秩序混乱,但我发现了你的错误。见下文
//Constructor
public FullTimeEmployee(string FFName, string FLName, double FID, double FHours)
{
FEmployeeFName = FFName;
FEmployeeLName = FLName;
FEmployeeID = FID; // This was backwards in your code.
FEmployeeWorkHour = FHours;
RegPay = calcRegPay(); // You need this line and the next one...
OTPay = CalOTPay(); // to trigger your payment calculations.
}