2013-04-23 2 views
0

헤이 녀석 나는 웹을 검색하고이 질문에 대한 답변을 찾는 데 어려움을 겪고 있습니다. 그래서 나는 가능하지 않을 수도 있다고 생각합니다. 인덱스에서 시작하는 각 호출마다 하나의 배열 변수를 호출하는 메소드를 사용할 수 있습니다 [ 0] 및 전체 배열을 통과하는 메서드를 호출 할 때마다 1을 증분? 아니면 매번 첫 번째 배열 변수를 제거하는 것처럼 더 좋은 방법이 있을까요?각 메서드 호출이 인덱스 0에서 시작하여 각 호출마다 1 씩 증가하면서 단일 배열 값을 반환합니다.

어떤 도움을 주셔서 감사 드리며 나는 초보자이며 일을하는 가장 좋은 방법을 배우려고 노력하고 있습니다.

+0

당신이 배열 위치에 특정 값을 원하는 경우, 예 가능 - 그것은이 같은 상관 없음 전달로 다른 값. 나는 그것이 의미하는 바대로 질문에서 완전히 명확하지 않기 때문에 당신이 언급하고있는 것을 보여주고 싶습니다. – Makoto

+0

질문이 명확하지 않습니다. 구문 _ "각 호출마다 단일 배열 변수 호출"_은 의미가 없습니다. 하나는 배열 변수를 "호출"하지 않습니다. 여러분의 설명에서 아래에 @hvgotcodes에 설명 된 간단한 배열 액세스 루프가 필요할 수도 있지만 배열의 요소, 즉 배열 반복자를 순차적으로 반환하는 메서드를 찾을 수도 있습니다. 무엇 이니? –

+0

일반적으로 예제로 설명하는 것이 좋습니다 ... – Dukeling

답변

1

나는 당신이 Iterator과 같은 것을 원한다는 것을 알기 때문에 완벽하게 가능합니다. index >= numbers.length는하지만이 꽤 많이 나는 이해할 수있는 것과 생각되면 예외를 던져 줘야 getNext()를 호출

public class IteratorTest{ 

    static int[] numbers = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; 
    static int index = 0; 

    public static void main(String[] args){ 
     for (int i = 0; i < 10; i++){ 
      System.out.println(getNext()); 
     } 
    } 

    public static int getNext(){ 
     return numbers[index++]; 
    } 

} 

예를 들면 다음과 같습니다이다.


편집

내가 여기 ArrayIterator을 가지고, 나는 위의 코드를보다 교훈이 될 거라 생각 했어요. 반복자의 구현 (@ 데이비드 콘래드는 제안) 흥미있는 경우에, 나는 바로 여기에 하나를 가지고 :

public class ArrayIterator<E> implements Iterator<E>{ 

    private E[] elements; 
    private int index; 

    public ArrayIterator(E[] elements){ 
     this.elements = elements; 
     index = 0; 
    } 

    @Override 
    public boolean hasNext(){ 
     return index < elements.length; 
    } 

    @Override 
    public E next(){ 
     if(!hasNext()){ 
      throw new NoSuchElementException("No more elements in the array."); 
     } 
     return elements[index++]; 
    } 

    @Override 
    public void remove(){ 
     throw new UnsupportedOperationException("Remove operation is not supported."); 
    } 

} 
+0

'java.util.Iterator '을 구현하고'hasNext()'메소드를 구현해야합니다. hasNext()가 false이면'getNext()'의 이름을'next()'로 바꾸고'java.util.NoSuchElementException'을 던집니다.'remove()'메소드를 사용하고 단순히'UnsupportedOperationException'을 던져 주면됩니다. 어디에서나'static '을 제거하고 배열을 생성자에 전달하면 멋진 IntArrayIterator를 사용할 수 있습니다. (그럼 일반 만들 수 있습니다.) –

+0

@DavidConrad, 제너릭 ArrayIterator의 예를 추가했습니다. –

+0

나는 +1하려했으나, 그 답이 점점 더 복잡해지기 시작했습니다. –

1

당신의 질문은 좀 불분명하지만, 나는 이것이 당신이 someArraysomeFunction가 정의되어 있는지 확인해야합니다 물론

for (int i = 0; i < someArray.length; i++) { 
    someFunction(someArray[i]); 
} 

수행 할 작업의 요점이라고 생각합니다.

+0

이 코드는 for 루프를 통과하면서 전체 배열을 인쇄합니다. 내가 뭘 하려는지 각 메서드 호출마다 0에서 시작하는 다음 배열 변수를 인쇄하는 것입니다. – ivanthemeh

관련 문제