私が直面している問題は、 を使用して特定の(映画) からユーザー入力のタイトルbinary search
を検索する方法を理解することですか? array
検索自体には感触がありますが、戻り値を使用して、見つかった場合と見つからなかった場合にタイトルを表示する方法がわかりません。
次のコードのチャックにはbubble sort
、binary search
. ここに私が見続けるエラーメッセージのいくつかがあります.
C:\Users\goofy bastard\Documents\JAVA>javac CharlieBrownP5.java
CharlieBrownP5.java:115: error: non-static method binarySearch(Movie[],String)
cannot be referenced from a static context
binarySearch(movies, key) = x;
CharlieBrownP5.java:115: error: unexpected type
binarySearch(movies, key) = x;
required: variable
found: value
CharlieBrownP5.java:134: error: cannot find symbol if(key.comparTo(movies[mid].getTitle()) > 0) {
symbol: method comparTo(String)
location: variable key of type String
3 errors
コード:
public static void displayTotals(Movie[] movies) {
double totalRevenue = 0;
int totalMovies = Movie.getTotalMovies();
for(int i = 0; i < movies.length; i++) {
totalRevenue += movies[i].calcRevenue();
}
System.out.print("The total number of movies is " + totalMovies +
" and their total revenue is ");
System.out.printf("%8.3f", totalRevenue);
System.out.print(" million dollars.\n\n");
}
public static void searchForMovie(Movie[] movies) {
Scanner input = new Scanner(System.in);
boolean needNextPass = true;
String key;
Movie temp;
System.out.print("Enter the Title of the Movie to Search for: ");
key = input.nextLine();
for(int pass = 1; pass < movies.length && needNextPass; pass++)
{
needNextPass = false;
for(int x=0; x< movies.length-pass; x++)
{
if(movies[x].getTitle().compareTo(movies[x+1].getTitle()) > 0)
{
temp = movies[x];
movies[x] = movies[x+1];
movies[x+1] = temp;
needNextPass = true;
}
}
}
int x;
binarySearch(movies, key) = x;
if (movies[x].getTitle() == key){
System.out.printf(movies[x].toString());
}
else{
System.out.print("There is no match item found for movie " +
"with the title " + key);
}
}
public static void getMenuChoice4() {
}
public int binarySearch(Movie[] movies, String key) {
int low = 0;
int high = movies.length -1;
while (high >= low) {
int mid = (low + high) / 2;
if(key.comparTo(movies[mid].getTitle()) > 0) {
high = mid -1;
}
else if(key == movies[mid].getTitle()){
return mid;
}
else{
low = mid + 1;
}
}
return -low - 1;
何時間もこれに携わっていたので、どんな助けも大歓迎です。私は Java を初めて使用します。これは私の Java クラスの割り当ての一部です。シンプルにしてください。