2015-10-26 166 views
0

我試圖爲理論視頻商店製作面向對象的股票系統。爲什麼說方法不是靜態時它是靜態的?

我經常收到以下錯誤信息:

non-static variables xyz cannot be accessed from a static context. 

所有我已經在靜態環境中發現的信息一直是當一個方法是靜態的,另一種是沒有,但是,沒有一個我的方法是靜態的。

在這段代碼中,我得到了兩次錯誤消息,我不明白爲什麼。

if (enterOption == 1) { 
    Movie movieNew = new Movie (titleInput, yearInput, directorInput, ratingInput, genreInput); 
    VideoShop.movies.add(movieNew); 
} else { 
    UI.runUI(); 
} 

我把它從VideoShop.movies.add(movieNew);UI.runUI();方法調用。

全部方法:

public void createMovie() 
{ 
    Scanner sc = new Scanner (System.in); 

    System.out.println ("Title: "); 
    String titleInput = sc.next(); 

    System.out.println ("Year: "); 
    int yearInput = sc.nextInt(); 

    System.out.println ("Director: "); 
    String directorInput = sc.next(); 

    System.out.println ("Rating [G/PG/M/MA15/R18]: "); 
    String ratingInput = sc.next(); 

    System.out.println ("Genre [a - Action/ b - Drama/ c - Comedy/ d - Musical/ e - Family/ f - Documentary]: "); 
    String genreInput = sc.next(); 

    System.out.println ("Format [VCD/DVD]: "); 
    String formatInput = sc.next(); 

    System.out.println ("Cost: "); 
    double costInput = sc.nextDouble(); 

    System.out.println ("Quantity: "); 
    int quantityInput = sc.nextInt(); 


    System.out.println("Confirm?"); 
    System.out.println("1. Yes 2. No, return to main menu"); 

    System.out.println("Enter option: "); 
    int enterOption = sc.nextInt(); 

    if (enterOption == 1) { 
     Movie movieNew = new Movie (titleInput, yearInput, directorInput, ratingInput, genreInput); 
     VideoShop.movies.add(movieNew); 

    } else { 
     UI.runUI(); 
    } 
} 
+0

是否有人可以解釋爲什麼我可能有這個問題? – stca11

+0

你在main()中使用了這個嗎? Java的主要是靜態的... –

+0

發佈你的完整方法。 –

回答

4

這可能是VideoShop.movies非靜態字段。而不是使用VideoShop.movies,你應該創建一個對象:

VideoShop shop = new VideoShop(); 
shop.movies.add(movieNew); 

UI相同:

UI ui = new UI(); 
ui.runUI(); 
相關問題