2013-04-27 72 views
-5

爲什麼我會收到錯誤?我用蝕,誤差線程「main」中的異常java

異常在線程 「主」 顯示java.lang.NullPointerException 在Shopping_Booket.Movie_assign(Shopping_Booket.java:8) 在AcmeVideo.main(AcmeVideo.java:8)

代碼:

public class AcmeVideo { 

    public static void main(String[] args) { 
     Shopping_Booket shop = new Shopping_Booket(); 
     shop.Movie_assign(); 
    } 
} 

public class Shopping_Booket { 

    movie[] MovieArray = new movie[5]; 

    public void Movie_assign() { 

     MovieArray[0].Assign("Batman Dark Knight Return", 8, 2012, 22); 
     MovieArray[1].Assign("Fringe", 9.2, 2008, 40); 
     MovieArray[2].Assign("V for Vandetta", 8, 2005, 28); 
     MovieArray[3].Assign("X man First Class", 7, 2005, 30); 
     MovieArray[4].Assign("Hulk", 8.5, 2000, 16); 
     System.out.println(MovieArray[2].Title); 
    } 
} 

public class movie { 

    public String Title; 
    public double Rating; 
    public int Year; 
    public double Price; 

    public void Assign(String title, double rating, int year, double price) { 
     this.Title = title; 
     this.Rating = rating; 
     this.Year = year; 
     this.Price = price; 
    } 

    public void Displayİnfo() { 
     System.out.println("Title = " + Title); 
     System.out.println("Year = " + Year); 
     System.out.println("Rating = " + Rating); 
     System.out.println("Price = " + Price); 
     System.out.println("-------------------------------------"); 
    } 
} 
+0

我可以看到錯別字...... – sschrass 2013-04-27 15:26:23

+0

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/array.html – 2013-04-27 15:26:25

+0

請不要使用類名稱,如'Shopping_Booket','movie'。方法名稱,如「Movie_assign()」。他們不確認Java命名約定。 – Lion 2013-04-27 15:36:11

回答

4

您已經創建了一個數組,但你從來沒有創建的實例。你的數組只是一個空對象數組。

movie [] MovieArray=new movie [5]; 

目前movie看起來是這樣的:

{null, null, null, null, null} 

而你需要做的是添加一些實例給它。

MovieArray[0] = new Movie(// etc); 

只是要注意

Java命名約定狀態變量不是常量必須以小寫字母開頭,以及所有後續字開始一個大寫字母。

MovieArray -> movieArray 
3

此聲明:

movie [] MovieArray=new movie [5]; 

...創建具有5個元素的新數組,但每個元素爲空開始。您從來沒有實際創建movie()類的新實例。相反,您每次都在空引用上調用您的Assign方法 - 這就是導致異常的原因。

有關數組的更多信息,請參閱Java教程的Arrays部分。

你應該改變你的Assign方法引入一個構造函數,然後寫:

MovieArray[0] = new movie("Batman Dark Knight Return", 8, 2012, 22); 

你應該再絕對Java naming conventions讀了起來:

  • 你的類應該是Movie,不movie
  • 您的變量應以小寫字母開頭(title ,不Title
  • 同上你的方法:displayInfo

我也強烈建議您使用私人領域而不是公共的。

+0

不知道爲什麼我的投票比你的投票多。 +1以獲得徹底的答案! – christopher 2013-04-27 15:28:18

相關問題