C# 输出不能显示构造函数,但可以显示默认构造函数

C# 输出不能显示构造函数,但可以显示默认构造函数,c#,C#,下面的代码将显示所有内容。 我可以在默认构造函数上显示。 不幸的是,我无法获得显示员工ID号和付款的任何结果。 我在编写代码时没有遇到任何错误。 因此,我完全不知道 //class for FullTimeEmployee namespace EmPloyee { public class FullTimeEmployee //object { private string FEmployeeFName, FEmployeeLName; private double FEmpl

下面的代码将显示所有内容。 我可以在默认构造函数上显示。 不幸的是,我无法获得显示员工ID号和付款的任何结果。 我在编写代码时没有遇到任何错误。 因此,我完全不知道

//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.
    }