title: Array null pointer exception error
body: <p>I am continuing with my project for school and have seemed to encounter another error.  So what is happening is basically I am receiving a null pointer exception even though the code looks fine.  I believe something is wrong with my array, and even after hours of searching I can't seem to find the error.  Once again, any help/solution would be greatly appreciated.  </p>
  
  <pre><code>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, "Guy", "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", "fantasy", "9780002245845", 54.50, 12.5);
  private static books book5 = new books("title2", "author2", "category2",
          "isbn2", 54.50, 12.5);
  private static books book6 = new books("title2", "author2", "category2",
          "isbn2", 54.50, 12.5);
  private static books book7 = new books("title2", "author2", "category2",
          "isbn2", 54.50, 12.5);
  private static books book8 = new books("title2", "author2", "category2",
          "isbn2", 54.50, 12.5);
  private static books book9 = new books("title2", "author2", "category2",
          "isbn2", 54.50, 12.5);
  private static books book0 = new books("title2", "author2", "category2",
          "isbn2", 54.50, 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, 0, b, 0, a.length);
      b[a.length] = 6;
      // for(int i=0;i&lt;b.length;i++)
      // {
      // System.out.println(b[i]);
      // }
  
      /*
       * int[] c = new int[]{1,2,3,4,5,6}; b = new int[(c.length)+1];
       * 
       * System.arraycopy( c, 0, b, 0, c.length ); b[c.length]=7;
       * 
       * for(int i=0;i&lt;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 &lt; 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 &lt; 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 &lt; 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 &lt; 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 &lt; 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 &lt; 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 &amp;&amp; canBorrow2 &amp;&amp; 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 &gt;= 2010) ? year : 0);
  
          month1 = ((month &gt;= 1 &amp;&amp; month &lt;= 12) ? month : 0);
  
          if (month1 == 1) {
              date1 = ((date &gt;= 1 &amp;&amp; date &lt;= 31) ? date : 0);
          }
  
          if (month1 == 2 &amp;&amp; (year1 % 4) != 0) {
              date1 = ((date &gt;= 1 &amp;&amp; date &lt;= 28) ? date : 0);
          }
  
          if (month1 == 2 &amp;&amp; (year1 % 4) == 0) {
              date1 = ((date &gt;= 1 &amp;&amp; date &lt;= 29) ? date : 0);
          }
  
          if (month1 == 3) {
              date1 = ((date &gt;= 1 &amp;&amp; date &lt;= 31) ? date : 0);
          }
  
          if (month1 == 4) {
              date1 = ((date &gt;= 1 &amp;&amp; date &lt;= 30) ? date : 0);
          }
  
          if (month1 == 5) {
              date1 = ((date &gt;= 1 &amp;&amp; date &lt;= 31) ? date : 0);
          }
  
          if (month1 == 6) {
              date1 = ((date &gt;= 1 &amp;&amp; date &lt;= 30) ? date : 0);
          }
  
          if (month1 == 7) {
              date1 = ((date &gt;= 1 &amp;&amp; date &lt;= 31) ? date : 0);
          }
  
          if (month1 == 8) {
              date1 = ((date &gt;= 1 &amp;&amp; date &lt;= 31) ? date : 0);
          }
  
          if (month1 == 9) {
              date1 = ((date &gt;= 1 &amp;&amp; date &lt;= 30) ? date : 0);
          }
  
          if (month1 == 10) {
              date1 = ((date &gt;= 1 &amp;&amp; date &lt;= 31) ? date : 0);
          }
  
          if (month1 == 11) {
              date1 = ((date &gt;= 1 &amp;&amp; date &lt;= 30) ? date : 0);
          }
  
          if (month1 == 12) {
              date1 = ((date &gt;= 1 &amp;&amp; date &lt;= 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 &lt; 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, 0, stuArrayAlt, 0,
                          studentArray.length);
                  stuArrayAlt[studentArray.length] = new students(stuNum,
                          fName, lName);
                  firstArrayStu = false;
              }
          }
  
      } else if (firstArrayStu == false) {
          for (int i = 0; i &lt; stuArrayAlt.length; i++) {
              if (stuArrayAlt[i] == null) {
                  stuArrayAlt[i] = new students(stuNum, fName, lName);
  
              } else if (i == (stuArrayAlt.length - 1)) {
                  studentArray = new students[stuArrayAlt.length + 1];
                  System.arraycopy(stuArrayAlt, 0, stuArrayAlt, 0,
                          stuArrayAlt.length);
                  studentArray[stuArrayAlt.length] = new students(stuNum,
                          fName, 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 &lt; bookArray.length; i++) {
              if (bookArray[i] == null) {
                  bookArray[i] = new books(name, author, category, isbn,
                          cost, sRating);
  
              } else if (i == (bookArray.length - 1)) {
                  bookArrayAlt = new books[bookArray.length + 1];
                  System.arraycopy(bookArray, 0, bookArrayAlt, 0,
                          bookArray.length + 1);
                  bookArrayAlt[bookArray.length] = new books(name, author,
                          category, isbn, cost, sRating);
                  firstArrayBook = false;
              }
          }
      }
  
      else if (firstArrayBook == false) {
          for (int i = 0; i &lt; bookArrayAlt.length; i++) {
              if (bookArrayAlt[i] == null) {
                  bookArrayAlt[i] = new books(name, author, category, isbn,
                          cost, sRating);
  
              } else if (i == (bookArrayAlt.length - 1)) {
                  bookArray = new books[bookArrayAlt.length + 1];
                  System.arraycopy(bookArrayAlt, 0, bookArray, 0,
                          bookArrayAlt.length + 1);
                  bookArray[bookArrayAlt.length] = new books(name, author,
                          category, isbn, cost, sRating);
                  firstArrayBook = false;
              }
          }
      }
  }
  
  public static boolean deleteStudent(String lName, int stuNum) {
      students[] arrayLookedUp = lookUpLastName(lName);
      boolean deleted = false;
      for (int i = 0; i &lt; arrayLookedUp.length; i++) {
          if ((arrayLookedUp[i].getStuNum()) == stuNum) {
              System.out.println("checker");
              if (firstArrayStu == true) {
                  for (int j = 0; j &lt; studentArray.length; j++) {
                      if (arrayLookedUp[i] == studentArray[j]) {
                          studentArray[j] = null;
                          deleted = true;
                          break;
                      }
                  }
                  break;
  
              } else if (firstArrayStu == false) {
                  for (int j = 0; j &lt; 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 &lt; 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 &lt; stuArrayAlt.length; i++) {
              if ((stuArrayAlt[i].getStuNum()) == stuNum) {
                  stuNumNew = true;
  
                  break;
              }
          }
      }
  
      return stuNumNew;
  }
  </code></pre>
  
  <p>}</p>
  
  <p>I have a student class with a constructor, and a method that states</p>
  
  <pre><code>public String getFirstName() {
          return fName;
      }
  </code></pre>
  
  <p>but still I am getting an error.  I know it is a lot of code to go through, so once again any kind of help would be greatly appreciated.</p>