首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

Default Constructor 可以展示结果,手动输入的constructor却不可以

2013-09-24 
Default Constructor 可以显示结果,手动输入的constructor却不可以我不是很懂为什么会出现这个情况。我的代

Default Constructor 可以显示结果,手动输入的constructor却不可以
Default Constructor 可以展示结果,手动输入的constructor却不可以
我不是很懂为什么会出现这个情况。
我的代码写的都差不多,至少我看了几遍,hour和ID都基本一样。但我真心不知道,为什么ID不会显示出数值来,还有工资也是。

接来下的代码有点长,我是完全基本完全复制了。 还请见谅。
//full Time Employee Class
namespace EmPloyeeChen
{
    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, Silly
        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


//EmployeeDriver  

    public static void CreateFullTime()
        {    //get output for default constructor
            FullTimeEmployee myFT;



            myFT = new FullTimeEmployee();

            //outputing with formatted strings
            Console.WriteLine("Full Time Employee's 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 checkLN = false;
            bool CheckID = false;
            bool CheckHour = false;

     //input the correct ID number
            do //do loop
            {
                try
                {
                    Console.WriteLine("Enter Your ID Number");


                    string inputid = Console.ReadLine();
                    FId = double.Parse(inputid);  //catch the input

                    //  FId = double.Parse(Console.ReadLine());

                }
                catch (FormatException fmte) 
                {
                    Console.WriteLine(fmte.Message);

                }
                if (FId >= 1001 && FId <= 9999)
                {
                    CheckID = true;  //help me get out, since ID is in the range
                }
                else
                {

                    Console.WriteLine("ID Number Must Be 4 Digit Number "
                    + "and greater than 1000");
                    CheckID = false;  //help me to stay in that, since what type is wrong
                }
            } while (!CheckID);  //keep going as long as If is false

           //Enter workhours


            do
            {
                try
                {
                    Console.WriteLine("Enter Hours");
                    string inputhr = Console.ReadLine();

                    FHrs = double.Parse(inputhr);  //convert inputhr string to double
                }
                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; //hlep me out 
                }
                else
                {
                    Console.WriteLine("Please Enter a Positive Number\n"
                    + "And the maxmium number is 65!!!");


                    CheckHour = false;
                }

            } while (!CheckHour); //keep going as long as If is false

            FullTimeEmployee YrFT;
            YrFT = new FullTimeEmployee(FN, LN, FId, FHrs);


            Console.BackgroundColor = ConsoleColor.Black;
            //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"));
        } //end class

          } 
    } //end name sapce

我看了几遍,没找到出错的地方啊。
真心不懂哪里出错了。

ID Pay Constructor


[解决办法]
带参数的构造函数不要给private的变量赋值,应该定义public的属性,给这个属性赋值。

热点排行