2015-10-02 8 views
0

Я новичок во всей концепции «итератора» на Java и нуждаюсь в помощи в ее реализации в моем коде. Вот код:Java - использование итераторов с массивами

class IteratorExample { 

int tstArray []; 

IteratorExample(){ 

} 

public void addNum(int num){ 

    tstArray[0] = num; //And yes, I can only add one number at the moment, but it 
         is not what I want to focus on right now. 
} 


public Iterator<Integer> innerIterator(){ 
    return new methodIterator(); 
} 

class methodIterator implements Iterator<Integer> { 
    public int index; 
    private methodIterator(){ 
     index = 0; 
    } 

    public boolean hasNext(){ 
     return index < tstArray.length; 

    } 
    public Integer next(){ 
     return; 
    } 


    }  

public static void main(String[] args){ 
    IteratorExample sample = new IteratorExample(); 
    test(sample); 
} 

public static void test(IteratorExample arr){ 
arr.addNum(1); 
system.out.print(arr); 
} 

} 

Это код, который был написан до сих пор. Я хочу сделать так, чтобы я мог добавить число в массив с помощью метода addNum(), а затем отобразить его из main с помощью system.print (и да, я знаю, что мне нужен метод toString для того, чтобы числа появлялись вверх вместо памяти-адрес, который будет реализован позже, сейчас я сосредоточен только на том, чтобы это работало.)

+2

Каков ваш фактический вопрос? –

+0

* «И да, я могу добавить только одно число на данный момент, но сейчас это не то, на что я хочу сосредоточиться». * На самом деле это то, на что вы должны ** сосредоточиться. «Потому что он включает инфраструктуру, которой нужен итератор. –

+1

Почему вы пытаетесь добавить итератор к типу non-collection? –

ответ

2

чтобы сделать Iterator работу, метод next() может быть

public Integer next(){ 
    return tstArray[index++]; 
} 

Это вызывает ArrayIndexOutOfBoundsException, если индекс слишком велик, тогда как спецификация для Iterator говорит, что он должен выбросить NoSuchElementException. Для правильного написания этой страницы вы можете написать

public Integer next(){ 
    if (index < tstArray.length) 
     return tstArray[index++]; 
    throw new NoSuchElementException(); 
} 
Смежные вопросы