2016-02-27 11 views
1

Im начинающий в java и im, пытающийся использовать массив, который я создал , но он не recoginze его. Кто-нибудь знает, что может быть там, которое здесь отсутствует?Невозможно назначить массив, который я создал java

, а именно: команда bookArray.length делает эту ошибку.

Library(int maxBookCapacity){ 
    Book bookArray[]= new Book[libraryMaxBookCapacity]; 
} 

boolean inLibrary(Book book){ 
    for(int i=0; i<bookArray.length; i++){ 
     if (book==bookArray[i]){ 
      return true; 
     } 
    } 
    return false; 
} 

ответ

1

bookArray является локальной переменной и spocannot быть доступ за пределами метода, определяющего. Фактически local означает только то, что имя bookArray доступно только внутри конструктора.

Если вам это нужно inLibrary вы должны объявить как поле в классе ограждающей:

public class Library { 

    private final Book[] bookArray; 

    public Library(int maxBookCapacity){ 
    bookArray = new Book[libraryMaxBookCapacity]; 
    } 

    public boolean inLibrary(Book book){ 
    for(int i = 0; i < bookArray.length; i++){ 
     if (book == bookArray[i]){ 
     return true; 
     } 
    } 
    return false; 
    } 
} 

Кстати, подумайте, если вы на самом деле нужно сравнить книгу объектов с оператором ==.

0
// If you declare this within the constructor, it'll be a local variable and nobody can access it. 
// Having it here means that inLibrary can see it 
private Book[] bookArray; 

Library(int maxBookCapacity){ 
    // watch out here, in your code you have a different var from the parameter of the constructor 
    bookArray= new Book[maxBookCapacity]; 
} 

boolean inLibrary(Book book){ 
    for(int i=0; i<bookArray.length; i++){ 
     if (book==bookArray[i]){ 
      return true; 
     } 
    } 
    return false; 
} 
Смежные вопросы