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

        }
    }

 

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

 

0
Vector đã trả lời 2018-02-22 02:35:00

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

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