Java程序运行时错误 公共类BooksTestDrive{ 公共静态void main(字符串[]args){ 书籍[]我的书=新书[3]; int x=0; myBooks[0]。title=“哈维的葡萄”; myBooks[1].title=“爪哇盖茨比”; myBooks[2].title=“Java食谱”; myBooks[0]。作者=“鲍勃”; myBooks[1]。作者=“苏”; myBooks[2]。作者=“伊恩”; 而(x

Java程序运行时错误 公共类BooksTestDrive{ 公共静态void main(字符串[]args){ 书籍[]我的书=新书[3]; int x=0; myBooks[0]。title=“哈维的葡萄”; myBooks[1].title=“爪哇盖茨比”; myBooks[2].title=“Java食谱”; myBooks[0]。作者=“鲍勃”; myBooks[1]。作者=“苏”; myBooks[2]。作者=“伊恩”; 而(x,java,nullpointerexception,Java,Nullpointerexception,此代码可编译,但在运行时,它会导致nullpointer异常 您的MyBooks分配[3]只分配您仍然需要为数组中的每个条目分配“new MyBook()”的数组。查看您的行: public class BooksTestDrive { public static void main(String[] args) { Books [] myBooks = new Books[3]; int x=0; myBooks[0].title = "The Grapes of Jave";

此代码可编译,但在运行时,它会导致nullpointer异常

您的MyBooks分配[3]只分配您仍然需要为数组中的每个条目分配“new MyBook()”的数组。

查看您的行:

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;
  }
 }
}

虽然数组中的每个元素都是空指针,但是您创建了一个数组。

看到了它,您需要初始化数组中的每个元素,在
for
中尝试它,而

应该可以:

Books [] myBooks = new Books[3];
公共类BooksTestDrive{
公共静态void main(字符串[]args){
书籍[]我的书=新书[3];
//初始化循环

对于(int i=0;i您需要将书籍添加到数组中。这应该可以:

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);
      }
     }
}
}
classbookstestdrive{
公共静态void main(字符串[]args){
书籍[]我的书=新书[3];
int x=0;
//这就是我们所缺少的。
myBooks[0]=新书();
myBooks[1]=新书();
myBooks[2]=新书();
myBooks[0].title=“Java的葡萄”;
myBooks[1].title=“爪哇盖茨比”;
myBooks[2].title=“Java食谱”;
myBooks[0]。作者=“鲍勃”;
myBooks[1]。作者=“苏”;
myBooks[2]。作者=“伊恩”;
而(x<3){
System.out.print(myBooks[x].title);
系统输出打印(“由”);
System.out.println(myBooks[x].作者);
x=x+1;
}
}
}

始终指明引发异常的行!对于更复杂的问题,请包括完整的stacktrace。引发异常的确切位置?
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;
        }
    }
}