2013-02-26 12 views
0

我有一個叫做DVD收藏的類,另一個叫做電影。與我試圖返回數組的方法是這樣的:如何將我的數組調用到我的主類?

public class DVDCollection 
{ 
    public static DVD[] collection; 
    public static void searchForDVD(String DVD[], String a) { 
    System.out.println("What DVD would you like to search for?"); 
    Scanner scan = new Scanner(System.in); 

    a = scan.nextLine(); 
    int N = DVD.length; 
    for (int i = 1; i < N; i++) 
     for (int j = i; j > 0; j--) 
     if (DVD[j-1].compareTo(DVD[j]) > 0) 
     change(DVD, j, j-1); 
    else break; 
    for (int i = 0; i < DVD.length; i++) { 
     System.out.print(DVD[i] + a); 
    } 
    System.out.println(); 
    } 
} 

而且我想從我的主要方法,像這樣稱呼它:

public class Movies 
{ 
    public static void main (String[] args) 
    { 
    DVDCollection movies = new DVDCollection(); 
    movies.searchForDVD(DVD); 
    } 
} 

但它給了我一個錯誤說找不到符號 - 變量DVD

那麼究竟是什麼問題呢?

回答

5

你打電話

movies.searchForDVD(DVD); 

但在main方法中沒有定義DVD變量。順便說一句,即使有一個,searchForDVD()方法有兩個參數,而不只是一個。

另請注意,searchForDVD()方法是靜態的。所以你不需要任何DVDCollection實例來調用它。取而代之的

DVDCollection movies = new DVDCollection(); 
movies.searchForDVD(...); 

你應該使用

DVDCollection.searchForDVD(...); 
0

在main方法調用searchForDVD方法時,你必須通過它的DVD的字符串數組與DVD作爲一個字符串的姓名。

目前您正在傳遞您尚未在主要方法中的任何位置聲明的變量DVD。

代碼在main方法應該是:

String[] dvds = new String[] {"firstDVD","secondDVD","thirdDVD"); 
String movie = "secondDVD"; 
DVDCollection.searchForDVD(dvds,movie); 
0

你在這個代碼中調用DVD幾次。我相信這裏的錯誤是變量名。

您已定義public static DVD[] collection;這是一個名爲collection的DVD對象數組。變量名稱爲collection,這就是您在引用變量時需要使用的名稱。

ie:collection.length而不是DVD.length。

當您說public static DVD[] collection;時,您告訴編譯器爲您創建一個名爲collection的公共靜態數組DVD。在某些時候,這個數組需要被初始化。陣列在下面的格式初始化:

DVD[] collection = new DVD[]; 

或 字符串[] arrayOfStrings = { 「一」, 「B」, 「C」, 「d」};

另一個問題是,你的方法定義如下:

public static void searchForDVD(String DVD[], String a) 

此方法需要兩個參數,一個也沒有。如果你想需要一個String []數組被稱爲「DVD」,那麼你應該聲明如下:

public static void searchForDVD(String[] DVD, String a) 

該宣言說,這個方法需要一個字符串數組,我們就叫它DVD和另一串將被稱爲一個。

請務必記下你的變量類型是什麼以及你的變量名是什麼。 這個類型告訴java在變量中期望什麼,名字就是你如何訪問它。

String myString = "string data"; 

字符串是類型。 myString是變量名稱。 「字符串數據」是分配給變量的值。

0

問題1

movies.searchForDVD(DVD); 

參數DVD沒有定義。

問題2

public static void searchForDVD(...)是類的靜態方法DVDCollection應該說是DVDCollection.searchForDVD(...)你不需要movie對象。

0

情理之中的事情對我來說是一樣的東西:

public class Movies 
{ 
    public static void main (String[] args) 
    { 
     DVDCollection movies = new DVDCollection(); 

     //create an Add function inside DVDCollection which reads lines from a text file into collection 
     movies.Add("list_of_movies.txt"); 

     // no arguments are needed here imo, just have it print to user to ask for a DVD to search and then search the collection 
     movies.searchForDVD(); 
    } 
} 

public class DVDCollection 
{ 
    public DVD[] collection; 
    public void Add(string file) 
    { 
     // parse file and add contents to collection 
    } 
    public void searchForDVD() 
    { 
     System.out.println("What DVD would you like to search for?"); 
     Scanner scan = new Scanner(System.in); 
     a = scan.nextLine(); 
     int N = DVD.length; 
     for (int i = 1; i < N; i++) 
      for (int j = i; j > 0; j--) 
       if (DVD[j-1].compareTo(DVD[j]) > 0) 
       change(DVD, j, j-1); 
       else break; 
     for (int i = 0; i < DVD.length; i++) 
     { 
      System.out.print(DVD[i] + a); 
     } 
     System.out.println(); 
    } 
} 
相關問題