如何将我的数组调用到我的主类?

时间:2013-02-26 22:38:52

标签: java

我有一个叫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 个答案:

答案 0 :(得分:5)

你正在打电话

movies.searchForDVD(DVD);

但主方法中没有定义DVD变量。顺便说一句,即使有一个,searchForDVD()方法也需要两个参数,而不只是一个。

另请注意,searchForDVD()方法是静态的。所以你不需要任何DVDCollection实例来调用它。而不是

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

你应该使用

DVDCollection.searchForDVD(...);

答案 1 :(得分:0)

在调用searchForDVD方法的main方法中,必须将dvds的字符串数组以及dvd的名称作为字符串传递给它。

目前您正在传递主要方法中未声明的变量DVD。

主要方法中的代码应为:

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

答案 2 :(得分:0)

您在此代码中多次调用DVD。我相信这里的错误是变量名。

您已定义public static DVD[] collection;,这是一个名为collection的DVD对象数组。变量名称为collection,这是引用变量时需要使用的名称。

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

当你说public static DVD[] collection;时,你告诉编译器创建一个名为collection的公共静态DVD对象数组。在某些时候,这个数组需要初始化。数组按以下格式初始化:

DVD[] collection = new DVD[];

或     String [] arrayOfStrings = {“a”,“b”,“c”,“d”};

另一个问题是您的方法定义如下:

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

此方法需要两个参数,而不是一个。如果您要求一个名为“DVD”的String []数组,那么您应该声明如下:

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

该声明说这个方法接受一个字符串数组,我们将其称为DVD和另一个名为a的字符串。

请务必记下您的变量类型以及变量名称是什么。 该类型告诉java在变量中期望什么,名称是你如何访问它。

String myString = "string data";

String是类型。 myString是变量名。 “字符串数据”是分配给变量的值。

答案 3 :(得分:0)

问题1

movies.searchForDVD(DVD);

未定义参数DVD

问题2

public static void searchForDVD(...)是类DVDCollection静态方法,您应该将其称为DVDCollection.searchForDVD(...),而不需要movie对象。

答案 4 :(得分: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();
     }
}