Kteam Q&A Community

Cộng đồng hỏi đáp về các vấn đề trong lập trình, công nghệ thông tin.

2

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

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();

        }
    }

 

2 câu trả lời Thêm câu trả lời

3
Hoàng Trung đã trả lời 2018-02-09 01:27:16

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.

3
C# learner đã trả lời 2018-02-09 12:09:09

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();

 

Câu trả lời của bạn

Bạn có thể trả lời câu hỏi này? Hãy chia sẻ nó cho mọi người.

Hủy bỏ hoặc

Chiến dịch

Kteam - Howkteam Free Education