我有一个叫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
那究竟是什么问题?
答案 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();
}
}