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

那么这里的问题到底是什么?

4

5 回答 5

5

你在打电话

movies.searchForDVD(DVD);

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

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

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

你应该使用

DVDCollection.searchForDVD(...);
于 2013-02-26T22:41:33.643 回答
0

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

目前,您正在传递未在 main 方法中的任何位置声明的变量 DVD。

main 方法中的代码应该是:

String[] dvds = new String[] {"firstDVD","secondDVD","thirdDVD");
String movie = "secondDVD";
DVDCollection.searchForDVD(dvds,movie);
于 2013-02-26T22:42:33.293 回答
0

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

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

即: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";

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

于 2013-02-26T22:43:32.107 回答
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();
     }
}
于 2013-02-26T22:55:21.687 回答
0

问题1

movies.searchForDVD(DVD);

参数DVD未定义。

问题 2

public static void searchForDVD(...)是类的静态方法,DVDCollection你应该调用它DVDCollection.searchForDVD(...)你不需要movie对象。

于 2013-02-26T22:44:06.783 回答