Java – array null pointer exception error

I continued my school project and seemed to have encountered another mistake So what happens is basically that I get a null pointer exception, even if the code looks good I believe there is something wrong with my array. Even after several hours of searching, I can't find the error Once again, any help / solution will be appreciated

import java.util.*;

public class library {

private static students stu1 = new students(65435,"Bob","Ted");
private static students stu2 = new students(45546,"Guy","Sid");
private static students stu3 = new students(78688,"Tim","Cas");
private static students stu4 = new students(45387,"Jim");
private static students stu5 = new students(12367,"Dom","Lam");
private static students stu6 = new students(45905,"Kid","Loo");
private static students stu7 = new students(65484,"Mut","Hum");
private static students stu8 = new students(34578,"Kim","Hay");
private static students stu9 = new students(20457,"Roy","Boy");
private static students stu0 = new students(15678,"Kil","Bil");

private static students[] studentArray;
private static students[] stuArrayAlt;
private static boolean firstArrayStu = true;

// private static books bookName = new books("title",// "author","category","isbn",cost,rating out of 10);

private static books book1 = new books(
        "Harry Potter and the Deathly Hallows","JK Rowling","fantasy","9780739360385",30.00,9.0);
private static books book2 = new books("Angels and Demons","Dan Brown","fiction","9780828855495",25.00,8.5);
private static books book3 = new books("The Hunger Games","Suzanne Collins","science fiction","9780439023481",20.00,8.0);
private static books book4 = new books("A Game of Thrones","George R R Martin","9780002245845",54.50,12.5);
private static books book5 = new books("title2","author2","category2","isbn2",12.5);
private static books book6 = new books("title2",12.5);
private static books book7 = new books("title2",12.5);
private static books book8 = new books("title2",12.5);
private static books book9 = new books("title2",12.5);
private static books book0 = new books("title2",12.5);

private static books[] bookArray;
private static books[] bookArrayAlt;
private static boolean firstArrayBook;

private static int year1;
private static int month1;
private static int date1;

public library() {
    bookArray = new books[] { book1,book2,book3,book4,book5,book6,book7,book8,book9,book0 };
    firstArrayBook = true;

    studentArray = new students[] { stu1,stu2,stu3,stu4,stu5,stu6,stu7,stu8,stu9,stu0 };
    firstArrayStu = true;
}

public static void main(String[] args) {
    // System.out.println(stu1.getStuNum() + " " + stu1.getFirstName() +
    // " "+ stu1.getLastName());

    // books[] bookReturn = stu1.insertBook(book1);
    // System.out.println(book1.getCheckInLibrary());
    // System.out.println(book1.getCheckInLibrary());

    // System.out.println(bookReturn[0].getName());

    // books[] bookReturn2 = stu1.insertBook(book2);
    // System.out.println(book2.getCheckInLibrary());
    // System.out.println(book2.getCheckInLibrary());
    // stu1.insertBook(book1);

    // checkOutBook(stu1,book1);
    // System.out.println(stu1);
    // stu1=null;
    // System.out.println(stu1);

    /*
     * stu1.lostBookFine(book1); System.out.println(stu1.getFineBalance());
     * stu1.lostBookFine(book2); System.out.println(stu1.getFineBalance());
     */

    int[] a = new int[] { 1,2,3,4,5 };
    int[] b = new int[(a.length) + 1];

    System.arraycopy(a,b,a.length);
    b[a.length] = 6;
    // for(int i=0;i<b.length;i++)
    // {
    // System.out.println(b[i]);
    // }

    /*
     * int[] c = new int[]{1,5,6}; b = new int[(c.length)+1];
     * 
     * System.arraycopy( c,c.length ); b[c.length]=7;
     * 
     * for(int i=0;i<b.length;i++) { System.out.println(b[i]); }
     */

    // int[] date = enterDate();
    // int[] date2 = book1.addTwoWeeks(date);
    // int[]date2= book1.getDateDue();

    System.out.println(studentArray[0].getFirstName());

    //boolean array=checkStuNum(45456);
    //System.out.println(array);

    //students[]array=lookUpLastName("sid");
    //array[0].getFirstName();

}

public static void returnBook(students borrower,books bookReturn) {

}

public static books[] lookUpTitleBooks(String title)// //////////////interchange
                                                    // the array-boolean
                                                    // firstArrayBook--two
                                                    // if statements
{

    int counter = 0;
    for (int i = 0; i < bookArray.length; i++) {
        if (title.equalsIgnoreCase(bookArray[i].getTitle())
                || ((bookArray[i].getTitle().toLowerCase())).contains(title
                        .toLowerCase())) {
            counter++;
        }
    }
    books[] booksLookUp = new books[counter];
    int counterS = 0;
    for (int i = 0; i < bookArray.length; i++) {
        if (title.equalsIgnoreCase(bookArray[i].getTitle())
                || ((bookArray[i].getTitle().toLowerCase())).contains(title
                        .toLowerCase())) {
            booksLookUp[counterS] = bookArray[i];
            counterS++;
        }
    }

    return booksLookUp;
}

// look up last name of student
public static students[] lookUpLastName(String lName) {

    students[] studentlName = new students[1] ;

    if (firstArrayStu == true) {
        int counter = 0;
        System.out.println("check");
        for (int i = 0; i < studentArray.length; i++) {
            if (lName.equalsIgnoreCase(studentArray[i].getLastName())   || ((studentArray[i].getLastName()).contains(lName.toLowerCase())) ){
                counter++;
                System.out.println("check if");

            }
            System.out.println("check for");

        }
        studentlName = new students[counter];
        int counterS = 0;
        for (int i = 0; i < studentArray.length; i++) {
            if (lName.equalsIgnoreCase(studentArray[i].getFirstName())
                    || ((studentArray[i].getFirstName().toLowerCase()))
                            .contains(lName.toLowerCase())) {
                studentlName[counterS] = studentArray[i];
                counterS++;
            }
        }
    }

    if (firstArrayStu == false) {
        int counter = 0;
        for (int i = 0; i < stuArrayAlt.length; i++) {
            if (lName.equalsIgnoreCase(stuArrayAlt[i].getFirstName())
                    || ((stuArrayAlt[i].getFirstName().toLowerCase()))
                            .contains(lName.toLowerCase())) {
                counter++;
            }
        }
        studentlName = new students[counter];
        int counterS = 0;
        for (int i = 0; i < stuArrayAlt.length; i++) {
            if (lName.equalsIgnoreCase(stuArrayAlt[i].getFirstName())
                    || ((stuArrayAlt[i].getFirstName().toLowerCase()))
                            .contains(lName.toLowerCase())) {
                studentlName[counterS] = stuArrayAlt[i];
                counterS++;
            }
        }
    }

    return studentlName;
}

public static void checkOutBook(students borrower,books bookBorrow) {

    boolean canBorrow1 = checkFine(borrower);
    boolean canBorrow2 = checkBorrowedBooks(borrower);
    boolean canBorrow3 = checkBorrowedBooks(bookBorrow);

    if (canBorrow1 == false) {
        System.out.println("Your fine is too damn high");// alert window and
                                                            // redirect to
                                                            // main menu-so
                                                            // he/she can
                                                            // pay it if he
                                                            // wants to
    }
    if (canBorrow2 == false) {
        System.out.println("Your already have 3 books checked out");// alert
                                                                    // window
                                                                    // and
                                                                    // redirect
                                                                    // to
                                                                    // main
                                                                    // menu-
                                                                    // so
                                                                    // he/she
                                                                    // can
                                                                    // return
                                                                    // a
                                                                    // book
                                                                    // if he
                                                                    // wants
                                                                    // to
    }
    if (canBorrow1 == false) {
        System.out.println("This book has been checkd out");// alert window
                                                            // and redirect
                                                            // to main menu-
                                                            // so he/she can
                                                            // look for
                                                            // another book
                                                            // and check it
                                                            // out
    }
    if (canBorrow1 && canBorrow2 && canBorrow3) {
        borrower.insertBook(bookBorrow);
        bookBorrow.checkOutStatusChange();
        // alert window to show successful check out and redirect to main
        // menu
    }

}

public static boolean checkFine(students borrower) {
    boolean canBorrow1 = borrower.checkBorrowedBooks(borrower
            .getBookArray());
    return canBorrow1;
}

public static boolean checkBorrowedBooks(students borrower) {
    boolean canBorrow2 = borrower.checkFine(borrower);
    return canBorrow2;
}

public static boolean checkBorrowedBooks(books bookBorrow) {
    boolean canBorrow3 = bookBorrow.getCheckInLibrary();
    return canBorrow3;
}

public static int[] enterDate() {
    Scanner input = new Scanner(system.in);
    boolean dateTrue = false;

    int year,month,date;

    while (dateTrue == false) {

        System.out.println("Enter year");
        year = input.nextInt();

        System.out.println("Enter month");
        month = input.nextInt();

        System.out.println("Enter date");
        date = input.nextInt();

        // checking first date----------------------------------------
        year1 = ((year >= 2010) ? year : 0);

        month1 = ((month >= 1 && month <= 12) ? month : 0);

        if (month1 == 1) {
            date1 = ((date >= 1 && date <= 31) ? date : 0);
        }

        if (month1 == 2 && (year1 % 4) != 0) {
            date1 = ((date >= 1 && date <= 28) ? date : 0);
        }

        if (month1 == 2 && (year1 % 4) == 0) {
            date1 = ((date >= 1 && date <= 29) ? date : 0);
        }

        if (month1 == 3) {
            date1 = ((date >= 1 && date <= 31) ? date : 0);
        }

        if (month1 == 4) {
            date1 = ((date >= 1 && date <= 30) ? date : 0);
        }

        if (month1 == 5) {
            date1 = ((date >= 1 && date <= 31) ? date : 0);
        }

        if (month1 == 6) {
            date1 = ((date >= 1 && date <= 30) ? date : 0);
        }

        if (month1 == 7) {
            date1 = ((date >= 1 && date <= 31) ? date : 0);
        }

        if (month1 == 8) {
            date1 = ((date >= 1 && date <= 31) ? date : 0);
        }

        if (month1 == 9) {
            date1 = ((date >= 1 && date <= 30) ? date : 0);
        }

        if (month1 == 10) {
            date1 = ((date >= 1 && date <= 31) ? date : 0);
        }

        if (month1 == 11) {
            date1 = ((date >= 1 && date <= 30) ? date : 0);
        }

        if (month1 == 12) {
            date1 = ((date >= 1 && date <= 31) ? date : 0);
        }

        if (month1 == 0 || date1 == 0 || year1 == 0) {
            // do nothing boolean remains false
            // put alert window here
        } else {
            dateTrue = true;
        }
    }

    int[] dates = { year1,month1,date1 };
    return dates;
}

public void createStudent(int stuNum,String fName,String lName) {
    if (firstArrayStu == true) {

        for (int i = 0; i < studentArray.length; i++) {
            if (studentArray[i] == null) {
                studentArray[i] = new students(stuNum,fName,lName);

            } else if (i == (studentArray.length - 1)) {
                stuArrayAlt = new students[studentArray.length + 1];
                System.arraycopy(studentArray,stuArrayAlt,studentArray.length);
                stuArrayAlt[studentArray.length] = new students(stuNum,lName);
                firstArrayStu = false;
            }
        }

    } else if (firstArrayStu == false) {
        for (int i = 0; i < stuArrayAlt.length; i++) {
            if (stuArrayAlt[i] == null) {
                stuArrayAlt[i] = new students(stuNum,lName);

            } else if (i == (stuArrayAlt.length - 1)) {
                studentArray = new students[stuArrayAlt.length + 1];
                System.arraycopy(stuArrayAlt,stuArrayAlt.length);
                studentArray[stuArrayAlt.length] = new students(stuNum,lName);
                firstArrayStu = true;
            }
        }
    }
}

public static void createBook(String name,String author,String category,String isbn,double cost,double srating) {

    if (firstArrayBook == true) {
        for (int i = 0; i < bookArray.length; i++) {
            if (bookArray[i] == null) {
                bookArray[i] = new books(name,author,category,isbn,srating);

            } else if (i == (bookArray.length - 1)) {
                bookArrayAlt = new books[bookArray.length + 1];
                System.arraycopy(bookArray,bookArrayAlt,bookArray.length + 1);
                bookArrayAlt[bookArray.length] = new books(name,srating);
                firstArrayBook = false;
            }
        }
    }

    else if (firstArrayBook == false) {
        for (int i = 0; i < bookArrayAlt.length; i++) {
            if (bookArrayAlt[i] == null) {
                bookArrayAlt[i] = new books(name,srating);

            } else if (i == (bookArrayAlt.length - 1)) {
                bookArray = new books[bookArrayAlt.length + 1];
                System.arraycopy(bookArrayAlt,bookArray,bookArrayAlt.length + 1);
                bookArray[bookArrayAlt.length] = new books(name,srating);
                firstArrayBook = false;
            }
        }
    }
}

public static boolean deleteStudent(String lName,int stuNum) {
    students[] arrayLookedUp = lookUpLastName(lName);
    boolean deleted = false;
    for (int i = 0; i < arrayLookedUp.length; i++) {
        if ((arrayLookedUp[i].getStuNum()) == stuNum) {
            System.out.println("checker");
            if (firstArrayStu == true) {
                for (int j = 0; j < studentArray.length; j++) {
                    if (arrayLookedUp[i] == studentArray[j]) {
                        studentArray[j] = null;
                        deleted = true;
                        break;
                    }
                }
                break;

            } else if (firstArrayStu == false) {
                for (int j = 0; j < stuArrayAlt.length; j++) {
                    if (arrayLookedUp[i] == stuArrayAlt[j]) {
                        stuArrayAlt[j] = null;
                        deleted = true;
                        break;
                    }
                }
            }
        } else if (i == (arrayLookedUp.length - 1)) {
            deleted = false;
        }
    }

    return deleted;
}

public static boolean checkStuNum(int stuNum) {

    // private static students[] studentArray;
    // private static students[] stuArrayAlt;
    // private static boolean firstArrayStu=true;
    boolean stuNumNew = false;

    System.out.println("test");
    if (firstArrayStu == true) {
        for (int i = 0; i < studentArray.length; i++) {
            System.out.println("false");

            if ((studentArray[i].getStuNum()) == stuNum) {
                System.out.println("true");

                stuNumNew = true;

                break;
            }
        }
    }

    else if (firstArrayStu == false) {
        for (int i = 0; i < stuArrayAlt.length; i++) {
            if ((stuArrayAlt[i].getStuNum()) == stuNum) {
                stuNumNew = true;

                break;
            }
        }
    }

    return stuNumNew;
}

}

I have a student class with a constructor and a declared method

public String getFirstName() {
        return fName;
    }

But I still got a mistake I know it takes a lot of code, so I would appreciate any help again

Solution

Since your code is currently written,

System.out.println(studentArray[0].getFirstName());

Because you will never initialize the array, you will throw an NPE

private static students[] studentArray;

Just declare it, not initialize it

Perhaps you should refactor your code as follows

private static ArrayList<students> studentArray = new ArrayList<students>();

// Inside the constructor or some method called before you access studentArray:
studentArray.add(stu1);
studentArray.add(stu2);
//...

// or,more concisely,since you're not using the temporary `students` variables:
studentArray.add(new students(65435,"Ted"));
studentArray.add(new students(45546,"Sid"));
//...

If you promise to use arrays instead of lists,

private static students[] studentArray;

You need to initialize with something similar

private static students[] studentArray = new students[10];

Then you need to assign its elements

studentArray[0] = stu1;

or

studentArray[0] = new students(65435,"Ted");
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>