2013-05-19 2 views
-1

Это первый способ использования двоичного поиска для меня, поэтому я сначала запускаю небольшую проблему (надеюсь,!), Она позволяет пользователю вводить случайное число, и если это число соответствует любой книге, выводит название.Проблема с двоичным поиском?

class b { 

    String book1, book2; 

    b() { 
     book1 = "Wicked Awesome Title"; 
     book2 = "How to Read a Book"; 

     public static Book getBook(Book [] A, int left, int right, String bookTitle) { 
      int middle; 
      Book found = null; 

      /**Your average Joe binary search...*/ 
      while (found == null && left <= right) { 
       //If middle item == 0, returns true 
       middle = (left + right)/2; 
       int compare = A[middle].sameTitle(bookTitle); 
       if (compare == 0) { 
        found = A[middle]; 
       } else { 
        if (compare >0) { 
         right = middle -1; 
        } else { 
         left = middle + 1; 
        } 
       } 
      } 
      return found; 
     } 

Теперь это проблема, после нажатия кнопки «найти» книгу,

private void findActionPerformed(java.awt.event.ActionEvent evt) {           

    String book1 = "Wicked Awesome Title"; 
    String book2 = "How to Read a Book";; 

    Book b = getBook(book1, book2); //this entire line is underlined, 
    if (b != null){ 
     itsATextField.setText("You've found the book " + b); 
    } 

так, что мне не хватает, чтобы сделать эту работу? Есть идеи?

ответ

1

Ваша getBook функция объявлена ​​как:

public static Book getBook(Book [] A, int left, int right, String bookTitle) { 

Когда вы пытаетесь вызвать его только с двумя аргументами Струнные:

Book b = getBook(book1, book2); 

Если вы хотите, чтобы вызвать функцию, вы должны вызвать его ожидаемые аргументы.

Кроме того, не уверены, связаны или нет, но вы не получили } в конце конструктора.

Кстати, добавление ошибки, которую вы получите, поможет нам вам помочь.

Смежные вопросы