Hỏi đáp

Chia sẻ kiến thức, cùng nhau phát triển

lỗi 'System.NullReferenceException' lập trình console application c#

01:01 09-02-2018 649 lượt xem 3 bình luận 02:35 22-02-2018

em tạo hai class  

class diem{ khơi tạo tọa độ }

 class diem
    {
        private double X;
        private double Y;
        //cac phuong thuc get set
        
        public double gs_x
        {
            get
            {
                return X;
            }
            set
            {
                X = value;

            }
        }
        public double gs_y
        {
            get
            {
                return Y;
            }
            set
            {
                Y = value;

            }
        }


    }

class tamgiac{tinh toan chu vi dien tich .....va nhập tọa độ}

class TamGiac
    {
        // properties
        private diem A;
        private diem C;
        private diem B;
        //methods
        // phuong thuc tao co va khong co tham so 
        public TamGiac()
        {
            A.gs_x = 0;
            A.gs_y = 0;
            B.gs_x = 0;
            B.gs_y = 0;
            C.gs_x = 0;
            C.gs_y = 0;
        }
        public TamGiac(diem a, diem b, diem c)
        {
            A = a;
            B = b;
            C = c;
        }
        // phuong thuc tinh chieu dai 1 doan thang 
        private double ChieuDai(diem d, diem c)
        
        {
            return Math.Sqrt(Math.Pow(c.gs_x-d.gs_x,2)+Math.Pow(c.gs_y-d.gs_y,2));
        }
        // chu vi va dien tich cua tam giac
        public double ChuVi()
        {
            double ab, ac, bc;
            ab = ChieuDai(A, B);
            ac = ChieuDai(A, B);
            bc = ChieuDai(B, C);
            return ab + ac + bc;
        }
        public double DienTich()
        {
            double ab, ac, bc,p;
            ab = ChieuDai(A, B);
            ac = ChieuDai(A, B);
            bc = ChieuDai(B, C);
            p=(double)(ab+ac+bc)/2;
            return Math.Sqrt(p * (p - ab) * (p - ac) * (p - bc));
        }
        //phuong thuc nhap toa do cac dinh
        public TamGiac Nhap()
        {
            Console.WriteLine("nhap vao toa do cac dinh cua tam giac");
            Console.WriteLine("dinh a:");
            Console.WriteLine("xA=  ");
            A.gs_x = double.Parse(Console.ReadLine());
            Console.WriteLine("yA=  ");
            A.gs_y = double.Parse(Console.ReadLine());
            Console.WriteLine("dinh b:");
            Console.WriteLine("xB=  ");
            B.gs_x = double.Parse(Console.ReadLine());
            Console.WriteLine("yB=  ");
            B.gs_x = double.Parse(Console.ReadLine());
            Console.WriteLine("dinh c:");
            Console.WriteLine("xC=  ");
            C.gs_x = double.Parse(Console.ReadLine());
            Console.WriteLine("xC=  ");
            C.gs_x = double.Parse(Console.ReadLine());
            TamGiac ABC=new TamGiac(A,B,C);
            TamGiac abc = new TamGiac();
            if (ABC.DienTich() > 0)
            {
                return ABC;
            }
            else
            {
                return abc;
            }
        }
    }

em chay các đối tượng A B C đều kiểu dữ liệu null không khởi tạo được mong anh chị giúp đỡ . em mới học OOP còn gà lắm.

class main

 class Program
    {
        static void Main(string[] args)
        {
            Console.Write("chuong trinh tinh chu vi va dien tic tam giac");
            TamGiac ABC = new TamGiac();
            ABC = ABC.Nhap();
            Console.WriteLine("chu vi cua tam giac: "+ABC.ChuVi());
            Console.WriteLine("dien tich cua tam giac " + ABC.DienTich());
            Console.ReadKey();

        }
    }

 

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
Vector đã bình luận 02:35 22-02-2018

Các bác bên trên trả lời chuẩn đó bác. mình cũng nghĩ vậy

C# learner đã bình luận 12:09 09-02-2018

Mình nghĩ là ở đây nè

        //Property
        private diem A;
        private diem C;
        private diem B;

Mà cần chuyển thành

        private diem A = new diem();
        private diem C = new diem();
        private diem B = new diem();

 

Hoàng Trung đã bình luận 01:27 09-02-2018

Mình nghĩ lỗi của bạn nằm ở chỗ chưa khởi tạo các đỉnh A, B, C trước khi sử dụng.

Câu hỏi mới nhất