這段代碼有什么問題呢?
public?class?Book?{ String?title; String?author; class?BooksTestDrive?{ } public?static?void?main(String?[]?args)?{ Book?[]?myBooks?=?new?Book[3]; int?x?=?0; 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; } } }
為什么沒有提示錯誤,運行的時候卻有問題呢?
2016-05-02
對數組的初始化工作沒有結束,在Java中對非基本數據初始化時,必須使用new。在使用new創建數組后,此時數組還是一個引用數組。只有再創建新的對象,并把對象賦值給數組引用,到此初始化結束。
可參考JAVA對象數組的初始化方法
public class Book {
? ? String title;
? ? String author;
? ? public static void main(String [] args) {
? ? ? ?Book[] myBooks = new Book[3];
? ? ??
? ? ? ?myBooks[0] = new Book();
? ? ? ?myBooks[1] = new Book();
? ? ? ?myBooks[2] =new Book();
? ? ? ?
? ? ? ? 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";
? ? ? ? for(int x = 0; x < 3; x++ ){
? ? ? ? System.out.print(myBooks[x].title);
? ? ? ? System.out.print( " by " );
? ? ? ? System.out.println(myBooks[x].author);
? ? ? ? }
? ? }
? ? }