0

私が直面している問題は、 を使用して特定の(映画) からユーザー入力のタイトルbinary searchを検索する方法を理解することですか? array検索自体には感触がありますが、戻り値を使用して、見つかった場合と見つからなかった場合にタイトルを表示する方法がわかりません。

次のコードのチャックにはbubble sortbinary 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 クラスの割り当ての一部です。シンプルにしてください。

4

1 に答える 1

0

エラーはすべてを示しています-binarySearch静的ではなく、静的関数で使用しようとしています。静的にするだけです:

public static int binarySearch(Movie[] movies, String key) {
...

他のエラーについては、関数呼び出しと変数を入れ替えるだけです。

x = binarySearch(movies, key);

これは、関数から返された値にbinarySearch(movies, key) = x;代入xすることを意味するため (その逆ではありません)、式の実行が終了すると返された値が消えるため意味がありません。

そして、あなたはcompareTo間違って入力しただけです(がありませんe)。

于 2013-04-04T06:21:24.927 に答える