01/10/2018, 17:44

E gọi hàm nhập danh sách nhân viên mà nó cứ bị lỗi

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace bai_28
{
class CNhanVien
{
    protected string HoTen, PhongBan;
    protected int CMND;
    //Rang buoc
    private bool KiemTraChungMinh(int a)
    {
        return (a > 0);
    }
    //Khoi tao
    public CNhanVien()
    {
        HoTen = "Pham Thanh Trung";
        PhongBan = "IT";
        CMND = 17110394;
    }
    public CNhanVien(string t, string p, int c)
    {
        if (KiemTraChungMinh(c))
        {
            HoTen = t; PhongBan = p; CMND = c;
        }
        else
        {
            HoTen = "Pham Thanh Trung";
            PhongBan = "IT";
            CMND = 17110394;
        }
    }
    public CNhanVien(CNhanVien x)
    {
        HoTen = x.HoTen;
        PhongBan = x.PhongBan;
        CMND = x.CMND;
    }
    //Cap nhat va truy xuat thong tin
    public string Ten
    {
        get { return HoTen; }
        set { HoTen = value; }
    }
    public string Ban
    {
        get { return PhongBan; }
        set { PhongBan = value; }
    }
    public int MaSoCMND
    {
        get { return CMND; }
        set { CMND = value; }
    }
    //Xu ly thong tin
    public virtual void Nhap()
    {
        Console.Write("Nhap ho va ten: "); HoTen = Console.ReadLine();
        Console.Write("Nhap phong ban: "); PhongBan = Console.ReadLine();
        Console.Write("Nhap CMND: "); CMND = int.Parse(Console.ReadLine());
    }
    public virtual void Xuat()
    {
        Console.WriteLine("Ho va ten: "+HoTen);
        Console.WriteLine("Phong ban: "+PhongBan);
        Console.WriteLine("CMND: "+CMND);
    }
}
class CBienChe : CNhanVien
{
    private int BacLuong;
    //Rang buoc
    private bool KiemTra(int b)
    {
        return (b > 0);
    }
    //cap nhat va truy cuat thong tin
    public int Luong
    {
        get { return BacLuong; }
        set
        {
            if (KiemTra(value))
                BacLuong = value;
        }
    }
    //Xu ly thong tin
    public override void Nhap()
    {
        base.Nhap();
        Console.Write("Nhap bac luong: ");
        do
        {
            BacLuong = int.Parse(Console.ReadLine());
            if (KiemTra(BacLuong) == false)
                Console.Write("Nhap lai bac luong: ");
        } while (KiemTra(BacLuong) == false);
    }
    public override void Xuat()
    {
        base.Xuat();
        Console.WriteLine("Luong cua nhan vien la: " + BacLuong);
    }
}
 class DanhSachNhanVienBienChe
{
    CBienChe[] A;
    private int n;
    //Xu ly thong tin
    public void Nhap()
    {
        Console.Write("Nhap so luong nhan vien bien che: ");n = int.Parse(Console.ReadLine());
        for(int i=0;i<n;i++)
        {
           A[i] = new CBienChe();
            A[i].Nhap();
        }
    }
    public void Xuat()
    {
        
    }
}
 class Program
{
    static void Main(string[] args)
    {
        //CBienChe m = new CBienChe();
        //m.Nhap();
        //m.Xuat();
        //CHopDong n = new CHopDong();
        //n.Nhap();
        //n.Xuat();
        DanhSachNhanVienBienChe m = new DanhSachNhanVienBienChe();
        m.Nhap();
    }
}

Lỗi:

EternalRerosu viết 19:53 ngày 01/10/2018

thử thêm dòng này vào xem

 public void Nhap()
    {
        Console.Write("Nhap so luong nhan vien bien che: ");
        n = int.Parse(Console.ReadLine());
        //==============================
        A = new CBienChe[n] ;
       //==============================
        for(int i=0;i<n;i++)
        {
           A[i] = new CBienChe();
            A[i].Nhap();
        }
    }
Trương Tấn Phát viết 19:55 ngày 01/10/2018

Cũng giống bên Java, một câu mà mình vừa nói cách đây vài hôm.

Nhớ là mảng trong Java phải khởi tạo mới được nhé, nếu không thì sẽ ăn NullPointerException .

C# cũng vậy.

CBienChe[] A = new CBienChe[n]; // Giá trị n xác định và không âm.
Phạm Trung viết 19:55 ngày 01/10/2018

Không được bạn.

Cũng giống bên Java, một câu mà mình vừa nói cách đây vài hôm.

Nhớ là mảng trong Java phải khởi tạo mới được nhé, nếu không thì sẽ ăn NullPointerException .

C# cũng vậy.

CBienChe[] A = new CBienChe[n]; // Giá trị n xác định và không âm.
Phạm Trung viết 19:52 ngày 01/10/2018

Không được luôn bạn.

Trương Tấn Phát viết 19:58 ngày 01/10/2018

Vẫn lỗi đó hay lỗi khác?

Quân viết 19:49 ngày 01/10/2018

Giúp cho bạn giống như xem bói ấy nhỉ, rất mất thời gian mà hiệu quả không cao

Phạm Trung viết 19:49 ngày 01/10/2018

thêm vào v vẫn báo lỗi.
Chắc khai báo sai hay gì

Trương Tấn Phát viết 19:50 ngày 01/10/2018

Vẫn lỗi nhưng là LỖI GÌ mới được.

Phạm Trung viết 19:55 ngày 01/10/2018
 à bài này e làm kế thừa nữa,
Phạm Trung viết 19:49 ngày 01/10/2018

à e fix dc r nãy e đánh thiếu

Bài liên quan
0