package com.googlecode.totallylazy.iterators; import com.googlecode.totallylazy.numbers.Numbers; import java.util.NoSuchElementException; import static com.googlecode.totallylazy.numbers.Numbers.lessThan; public final class RangerIterator extends ReadOnlyIterator<Number> { private Number next; private final Number end; private final Number step; public RangerIterator(final Number start, final Number end) { this(start, end, 1); } public RangerIterator(final Number start, final Number end, final Number step) { this.next = start; this.end = end; this.step = step; } public final boolean hasNext() { return lessThan(next,end); } public final Number next() { if (!hasNext()) { throw new NoSuchElementException(); } Number result = next; next = Numbers.add(next, step); return result; } }