2013-05-21 2 views
0

이렇게하면 결국 두 자리 숫자를 사용하여 책을 찾을 수 있습니다. 그러나 제목은 올바른 번호를 입력 한 경우에만 출력됩니다. 중요한 정보가 쓰여지는 코드에 대한 세부 정보 ...하나의 클래스에서 여러 배열을 구성하는 방법은 무엇입니까?

기본적으로 binarySearch 배열의 미리 결정된 값과 일치하는 번호 (refNum)를 입력 한 프로그램의 합계는 책 제목을 출력합니다. 어레이에 저장된 숫자를 비교할 (계속)

class books { 

     String refNum, title; 

     books (String _refNum, String _title) { 
      refNum = _refNum = enterNumberField.getText(); //grab inputted #(continues...) 

상기 #해야 binarySearch 어레이 동일 #되는 동일하다면 출력 적절한 타이틀 것이다. 일명 reNum = 4 (도 binarySearch [0]) [0] "해리 포터"그것이와 일치하면 찾을 inputed 번호를 사용하기 때문에 이것은 이진 검색을위한 것

  int refNum[] = new int[2]; 

      refNum[0] = 4; 
      refNum[1] = 6; 
      refNum[2] = 10; 

      int binarySearch[] = new int[2]; 

      binarySearch[0] = 4; 
      binarySearch[1] = 6; 
      binarySearch[2] = 10; 

      String title[] = new String[2]; 

      title[0] = "Harry Potter"; 
      title[1] = "Chrysalids"; 
      title[2] = "Lord of the Flies"; 
     } 
    } 

출력 표제 같아야 무엇이든지, 그리고 있다면 그것은 해당 제목을 출력합니다.

public static Boolean binarySearch(String [ ] A, int left, int right, String V){ 
     int middle; 
     refNum ++; 
     if (left > right) { 
      return false; 
     } 

     middle = (left + right)/2; 
     int compare = V.compareTo(A[middle]); 
     if (compare == 0) { 
      return true; 
     } 
     if (compare < 0) { 
      return binarySearch(A, left, middle-1, V); 
     } else { 
      return binarySearch(A, middle + 1, right, V); 
     } 
    } 

결국 나는이를 출력하는 코드를 추가 할 것입니다,하지만 먼저 나는 희망 난 당신이 내 목표를 이해하는 방법이 설명했습니다 클래스와 실제 검색에 배열을 구성하는 방법을 배울 필요가있다. .. 어떤 생각이야?

+3

** 관련 카테고리가 있습니까? 이해할 수없는 질문 **이 있습니까? – OldCurmudgeon

+0

'book' 오브젝트 배열에서'refNum'으로 정렬 된 항목을 찾으려고합니까? –

+0

예, 궁극적 인 목표는 책의 제목 (일명 항목)을 검색하는 것입니다. – user2407152

답변

1

일반적으로이 같은 색인을 사용하여 한 클래스에서 여러 개의 배열을 사용하지 않아야합니다. 이것은 일련의 책으로 구성되어 있습니다.

public class Book { 
    private int refNum; 
    private String name; 

    public Book(int refNum, String name) { 
    this.refNum = refNum; 
    this.name = name; 
    } 

    public int getRefNum() { 
    return refNum; 
    } 

    public void setRefNum(int refNum) { 
    this.refNum = refNum; 
    } 

    public String getName() { 
    return name; 
    } 

    public void setName(String name) { 
    this.name = name; 
    } 
} 

// a comparator allows ordering to an arbitrary row 
public RefNumOrder implements Comparator<Book> { 
    public int compare(Book b1, Book b2) { 
    return b1.getRefNum() - b2.getRefNum(); 
    } 
} 

public class Books { 
    private List<Book> books = new ArrayList<Book>(); 
    public Books() { 
    books.add(new Book(..); 
    .. 
    } 
    public Book getByRefNum(int refNum) { 
    Collections.sort(books, new RefNumOrder()); 
    int index = Collections.binarySearch(book, new RefNumOrder()); 
    if (index >= 0) return books.get(index); 
    return null; 
    } 
} 

이렇게하면 여러 배열을 처리 할 필요없이 모든 행을 쉽게 찾을 수 있습니다.

+0

대단하군요! 그러나 공용 클래스 "Book"외부에서 인식되지 않으면 어떤 값 (예 : refNum)에 액세스 할 수 있습니까? – user2407152

+0

'Book' 클래스는'getRefNum()'과'setRefNum (..) '메소드가 이미 구현되어 있습니다. 따라서 위의 코드를 이해하지 못한다면 클래스 및 액세스 수정 자에 대한 자세한 정보가 필요합니다. – Rupak

0

알다시피,지도를 사용하고 조회 만하면됩니다.

관련 문제