2013-11-29 5 views
-1

У меня должно быть 2 конструктора, и первое из них спрашивает, изменит ли он n<=0 n на 1 и инициализирует объект Bvector для представления булевого вектора с n элементами, все установлены в true. (Все сначала конструктор). Как вернуть размер с помощью метода getsize?Булевы векторы

public class BVector{ 
    private int size; 
    private boolean[] bVectorData;  

    public BVector(int n) {  
     if (n<=0){ 
      n=1; 
     }   
     Boolean[] bVectorDara= new Boolean[n]; 
     Arrays.fill(bVectorData, Boolean.true); 
    } 

    public BVector(boolean[] data) {   
     size = data.length; 
     bVectorData = new boolean[size]; 

     //here copy the elements from array data to array bVectorData 
     for(int i=0; i<size; i++){ 
      bVectorData[i] = data[i]; 
     } 
    } 

    public int getSize() { 
    /* returns the size of the boolean vector */   
    } 
+0

Пожалуйста, отформатируйте свой код, чтобы нам было легче читать. – david99world

+3

в первом конструкторе вы ошибочно написали 'bVectorData'. И вы можете получить размер с помощью 'bVectorData.length' – Blub

+1

Я бы использовал IDE, если бы был вами. Проверка орфографии в реальном времени, компиляция и автоматическое завершение - ваши лучшие друзья! – Joetjah

ответ

3

Все массивы в Java имеет length поля, содержащие их размер. Yoy должен вернуть это из вашего метода getSize(). Удивительно, что вы этого не знаете, так как вы уже используете это поле длины во втором конструкторе.

Теперь для вашего первого конструктора. Он не инициализирует переменную экземпляра bVectorData, примитивного типа boolean[]. Он создает локальную переменную bVectorDara, типа java.lang.Boolean[]. Вы получили это право во второй конструктор, поэтому делать то же самое в первом:

bVectorData = new boolean[n]; 

или, еще яснее:

this.bVectorData = new boolean[n]; 

Наконец, вам необходимо заполнить его с true, и не с Boolean.true, который даже не существует.

+0

Большое спасибо за ваш четкий ответ. новый для программирования, поэтому я не понимаю концепции хорошо. последний вопрос, как бы установить все элементы в true? Я думаю, я должен использовать не оператора! но могу ли я использовать его в объявлении объекта? – user3049674

+0

[Arrays.fill()] (http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#fill%28boolean [],% 20boolean% 29) может заполнить ваш массив с правдой. –