0

I have this program, getting information from the user. I have set p as a Patient class that I have defined. I have gotten a first name and last name as strings with p.FirstName and p.LastName. I also need to get address information and phone number information. Both the Address and Phone Number need to be classes. I have these classes set up with default getters and setters. For some reason, when I call p.Paddress.Street = Console.Readline(); it comes back with this error. "System.NullReferenceException: 'Object reference not set to an instance of an object.'" What am I doing wrong?

public Patient(string first, string last, char gender, char married, DateTime dob, decimal money, Address paddress, PhoneNumber homenumber, PhoneNumber mobilenumber)
    {
        FirstName = first;
        LastName = last;
        Gender = gender;
        Married = married;
        DateOfBirth = dob;
        Expenses = money;
        Paddress = paddress;
        HomeNumber = homenumber;
        MobileNumber = mobilenumber;



    }//end method

    //getters and setters
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public DateTime DateOfBirth { get; set; }
    public decimal Expenses { get; set; }
    public char Gender { get; set; }
    public char Married { get; set; }
    public Address Paddress { get; set; }
    public PhoneNumber HomeNumber { get; set; }
    public PhoneNumber MobileNumber { get; set; }
public static void Add(Patient p)
        {
            string answer;
            bool run;

            Console.Write("First Name: ");
            p.FirstName = Console.ReadLine();

            Console.Write("Last Name: ");
            p.LastName = Console.ReadLine();

            //gender
            do
            {
                run = true;
                Console.Write("Gender (M/F): ");
                answer = Console.ReadLine();
                if (answer.Length < 1)
                {
                    run = false;
                    continue;
                }
                if (answer.Length > 1)
                {
                    run = false;
                    continue;
                }
                p.Gender = answer.ToUpper()[0];
                if (p.Gender != 'M' && p.Gender != 'F')
                {
                    run = false;
                }
            }
            while (!run);

            //marital status
            do
            {
                run = true;
                Console.Write("Married (Y/N)?: ");
                answer = Console.ReadLine();
                if (answer.Length < 1)
                {
                    run = false;
                    continue;
                }
                if (answer.Length > 1)
                {
                    run = false;
                    continue;
                }
                p.Married = answer.ToUpper()[0];
                if (p.Married != 'Y' && p.Married != 'N')
                {
                    run = false;
                }

            }
            while (!run);

            Console.Write("Date of Birth: ");
            p.DateOfBirth = DateTime.Parse(Console.ReadLine());

            Console.Write("Expenses ($): ");
            p.Expenses = decimal.Parse(Console.ReadLine());

            Console.Write("Street Address: ");
            p.Paddress.Street = Console.ReadLine();

            Console.Write("City: ");
            p.Paddress.City = Console.ReadLine();

            Console.Write("State: ");
            p.Paddress.State = Console.ReadLine();

            Console.Write("Zip: ");
            p.Paddress.Zip = int.Parse(Console.ReadLine());

            Console.Write("Home Phone: ");
            p.HomeNumber.Number = Console.ReadLine();

            Console.Write("Mobile Phone: ");
            p.MobileNumber.Number = Console.ReadLine();


        }//end add method

0 Answers0