Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 7 của 7
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

  2. #2
    Hi ban,

    Mình đoán là bạn đang học CTDL và bà cô iu cầu bạn viêt 1 CTDL để lưu trữ danh sách sinh viên. Nếu đúng zay thì bạn có thể dùng 1 array (như bài của bạn) hoặc dữ liệu khác như linked list chẳng hạn. Array thì dễ cài đặt nhưng số phần tử cố định, linked list cài đặt ít...dễ hơn Array nhưng số phần tử ko cố định (Capacity).

    Mình ko rõ hàm ADD của bạn lắm, nếu ý bạn là bỏ sinh viên x vô cuối mảng thì bạn code sai rồi [IMG]images/smilies/biggrin.png[/IMG]
    tham khảo cái này
    Mã:
    class QuanLyNhanVien
    {
    	private NhanVien a[] = new NhanVien[100];
    	private int n = 0;
            public void ADD(NhanVien x)
    	{
                    if (n <= 100)
    		{
                          a[n] = x;
                          n++;
                    }
    
    	}
    }

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Lỗi trên là do chưa khởi tạo mảng
    bạn phải khởi tạo mảng trước khi sử dụng

    Mã:
    NhanVien[] a = new NhanVien[100];
    Mã:
    for(int i=n+1;i>=n;i--)        {            a[i]=new NhanVien();            a[i]=x;            break;        }
    Đoạn này khó hiểu vậy???

    PS: Vote theo anh z, dùng vector, list, arraylist tiện hơn nhiều. ArrayList và Vector gần như giống nhau (ngoại trừ vấn đến Thread Safe). Nếu chưa biết thread là gì thì cứ ArrayList mà táng

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Hàm thêm 1 nhân viên của mình bị sai rồi . Ý của bài này là lúc đầu khởi tạo danh sách rỗng , rồi sau đó mình sẽ dùng hàm thêm 1 nhân viên vào để từ đó cứ tạo ra danh sách . Mảng thì không giải quyết vấn đề này được vì mình luôn cần khởi tạo số lượng mảng trước , trước khi mà mình muốn thêm vào 1 phần tử nào đó . Vậy chỉ có thể dùng danh sách liên kết để khởi tạo cho cái danh sách nhân viên này thôi hả các bạn ???

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi giacmo1612
    Hàm thêm 1 nhân viên của mình bị sai rồi . Ý của bài này là lúc đầu khởi tạo danh sách rỗng , rồi sau đó mình sẽ dùng hàm thêm 1 nhân viên vào để từ đó cứ tạo ra danh sách . Mảng thì không giải quyết vấn đề này được vì mình luôn cần khởi tạo số lượng mảng trước , trước khi mà mình muốn thêm vào 1 phần tử nào đó . Vậy chỉ có thể dùng danh sách liên kết để khởi tạo cho cái danh sách nhân viên này thôi hả các bạn ???
    Dùng ArrayList như sau

    Mã:
    ArrayList<NhanView> danhSachNV = new ArrayList<NhanView>();danhSachNV.add(new NhanVien());NhanVien nv1 = danhSachNV.get(n);danhSachNV.remove(nv1);//... đọc thêm javadoc nhé

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Thêm 1 nhân viên vào danh sách nhân viên trong Java lỗi ArrayIndexOutOfBoundsException?

    Mình có bài tập như thế này :
    Mã:
    class NhanVien
    {
    	private String maNV,Hoten;
    	private double luong;
    	public NhanVien()
    	{
    		maNV=Hoten=null;
    	 	luong=0;
    	}
    	public void setmaNV(String x)
    	{
    		maNV=x;
    	}
    	public void setHoten(String x)
    	{
    		Hoten=x;
    	}
    	public void setLuong(double x)
    	{
    		luong=x;
    	}
    	public String getmaNV()
    	{
    		return maNV;
    	}
    	public String getHoten()
    	{
    		return Hoten;
    	}
    	public double getLuong()
    	{
    		return luong;
    	}
    	public String toString()
    	{
    		String a;
    		return a=maNV+" "+Hoten+" "+luong; 	
    	}
           
    
    }
    Mã:
    class QuanLyNhanVien
    {
    	private NhanVien a[];
    	private int n;
            public void ADD(NhanVien x)
    	{
    		
    		for(int i=n+1;i>=n;i--)
    		{
    			a[i]=new NhanVien();
    			a[i]=x;
    			break;
    		}
    	}
    }
    Cô mình bảo là hãy viết phương thức thêm vào 1 nhân viên trong class QuanLyNhanVien , các phương thức get/set . Viết class Demo để thực thi chương trình trên , sử dụng lại phương thức thêm vào 1 nhân viên trong class QuanLyNhanVien để tạo ra 1 danh sách nhân viên cần quản lý .
    Đây là class Demo của mình :
    Mã:
    class Demo{
    	public static void main (String[] args) {
    		int chon; String b,c; double d;
    		QLNV a=new QLNV();
    		Scanner x=new Scanner(System.in);	
    					NhanVien nv=new NhanVien();
    					System.out.print("Ma NV  : ");
    					b=x.nextLine();
    					System.out.print("Ho Ten : ");
    					c=x.nextLine();
    					System.out.print("Luong  : ");
    					d=x.nextDouble();
    					x.nextLine();
    					nv.setmaNV(b);
    					nv.setHoten(c);
    					nv.setLuong(d);
    					a.ADD(nv);
    	}
    }
    Khi mình chạy thì nó báo lỗi ArrayIndexOutOfBoundsException ( bị lọt mảng ) , do là n tăng lên 1 vượt qua khỏi giá trị n lúc đầu . Vì cái ý bài này là muốn sử dụng vòng do {..........}while với các lựa chọn nhập , xuất và số lượng nhập (thêm) không cố định , mình có thể thêm bao nhiêu cũng được . Mình biết vậy nhưng không biết khắc phục sao , mong mấy bạn giúp !!!!

  7. #7
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Để nhập dữ liệu thì tốt nhất là nhập vào 1 deque thay vì mảng.
    http://docs.oracle.com/javase/6/docs/api/java/util/Deque.html
    Có 3 loại deque, đọc trong đó rồi tùy tình huống mà chọn cái phù hợp.

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •