Ошибка выполнения Java-программы - PullRequest
0 голосов
/ 15 января 2011
public class BooksTestDrive {
 public static void main(String[] args) {

  Books [] myBooks = new Books[3];
  int x=0;
  myBooks[0].title = "The Grapes of Jave";
  myBooks[1].title = "The Java Gatsby";
  myBooks[2].title = "The Java Cookbook";
  myBooks[0].author = "bob";
  myBooks[1].author = "sue";
  myBooks[2].author = "ian";

 while (x < 3) {
  System.out.print(myBooks[x].title);
  System.out.print("by");
  System.out.println(myBooks[x].author);
  x = x+1;
  }
 }
}

Этот код компилируется, но во время выполнения дает исключение nullpointer.

Ответы [ 5 ]

5 голосов
/ 15 января 2011

Ваше распределение MyBooks [3] только назначает массив Вам все еще нужно назначить "new MyBook ()" для каждой записи в вашем массиве.

2 голосов
/ 15 января 2011

Видите, вам нужно инициализировать каждый из элементов вашего массива, попробуйте его в for или while

2 голосов
/ 15 января 2011

посмотрите на вашу строку:

Books [] myBooks = new Books[3];

вы создаете массив, хотя каждый элемент массива является нулевым указателем.

1 голос
/ 15 января 2011

Это должно работать:

public class BooksTestDrive {
public static void main(String[] args) { 
      Books [] myBooks = new Books[3];
      // init loop
      for (int i=0;i<myBooks.length;i++) {
         myBooks[i] = new Books();
      }

      myBooks[0].title = "The Grapes of Jave";
      myBooks[1].title = "The Java Gatsby";
      myBooks[2].title = "The Java Cookbook";
      myBooks[0].author = "bob";
      myBooks[1].author = "sue";
      myBooks[2].author = "ian";

      for (Books book : myBooks) {
          System.out.printf("%s by %s\n",book.title,book.author);
      }
     }
}
}
0 голосов
/ 18 августа 2011

Вам нужно добавить книги в массивы. Это должно работать:

class BooksTestDrive {
    public static void main(String [] args) {
        Books [] myBooks = new Books[3];
        int x = 0;
        // THIS IS WHAT WAS MISSING.
        myBooks[0] = new Books();
        myBooks[1] = new Books();
        myBooks[2] = new Books();

        myBooks[0].title = "The Grapes of Java";
        myBooks[1].title = "The Java Gatsby";
        myBooks[2].title = "The Java Cookbook";
        myBooks[0].author = "bob";
        myBooks[1].author = "sue";
        myBooks[2].author = "ian";

        while (x < 3) {
            System.out.print(myBooks[x].title);
            System.out.print(" by ");
            System.out.println(myBooks[x].author) ;
            x = x + 1;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...