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 4 của 4
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Cho em hỏi lỗi này là gì ạ ?

    Em mới bắt đầu học lập trình java nên chưa biết gì nhiều , mong mọi người giúp đỡ ạ :
    Đề bài là nhập 1 mảng các sinh viên ( chỉ có tên ). sau đó nhập vào 1 cái tên và kiểm tra có sinh viên này không . Em làm thế này thì lúc chạy nó báo lỗi như sau ạ :
    "
    Nhap vao so sinh vien :
    3
    Hay nhap vao ho ten cac sinh vien
    Exception in thread "main" java.lang.NullPointerException
    Sinh vien : at LamQuenJava.Mang1.main(Mang1.java:26)
    Java Result: 1

    "
    Mã:
    ackage LamQuenJava;
    
    import java.util.Scanner;
    
    /**
     *
     * @author SVN - Team
     */
    public class Mang1 {
        static Scanner in = new Scanner(System.in);
        public static void main(String[] args) {
            Student[] group1 ;
            int n;
            System.out.println("Nhap vao so sinh vien :");
            n = in.nextInt();
            group1 = new Student[n];
            System.out.println("Hay nhap vao ho ten cac sinh vien ");
            for(int i=0;i<n;i++){
                System.out.print("Sinh vien :");
                group1[i].name = in.nextLine();
            }
            System.out.println("Ket thuc qua trinh nhap!");
            System.out.println("Nhap vao ten sinh vien can tra:");
            String x = in.nextLine();
            if(check(x,group1,n)==1) System.out.println("Co sinh vien nay!");
            else System. out.println("Khong co sinh vien nay! ");
        }
         static int check(String name,Student [] group,int n){
            int t=0;
            for(int i=0;i<n;i++){
                if(name.compareTo(group[i].name) == 0 ) t=1;
                break;
            }
            return t;
        }
    }
     class Student{
        String name;
        void show(){
            System.out.println("sinh vien :" + this.name);
        }
    }

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Bạn tự làm à? Sao thấy tác giả là SVN - Team (tên nghe quen).

    Bạn chưa tạo đối tượng mới cho từng phần tử của mảng mà.

    Mã:
    Student[] st = new Student[40];for (int i = 0; i < st.length; i++) {    st[i] = new Student();}

  3. #3
    Trích dẫn Gửi bởi SITUVNX
    Bạn tự làm à? Sao thấy tác giả là SVN - Team (tên nghe quen).

    Bạn chưa tạo đối tượng mới cho từng phần tử của mảng mà.

    Mã:
    Student[] st = new Student[40];for (int i = 0; i < st.length; i++) {    st[i] = new Student();}
    cái dòng đấy là mặc định của net bean mà @@ em tạo file class nào cũng có luôn cái dòng đó [IMG]images/smilies/biggrin.png[/IMG]
    Em vừa sửa như anh thì chạy được rồi , nhưng em tưởng là tạo mảng gồm n phần tử Student rồi thì mỗi phần tử của mảng đó là 1 đối tượng luôn rồi ạ ? Nếu không thì cái dòng " Student[] st = new Student[40]; " nó tạo ra cái gì vậy ạ ?

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Khi khai báo mảng, khởi tạo số lượng phần thử trong mảng chỉ là khai báo mảng các con trỏ. Nếu muốn con trỏ của từng phần tử trỏ đến các đối tượng thì tiếp tục tạo đối tượng mới.
    Các mảng của kiểu nguyên thủy thì không cần khởi tạo đối tượng cho từng phần tử.

 

 

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
  •