Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- public class Range implements Iterable<Integer> {
- private final int begin, end, stride;
- public Range(int begin, int end, int stride) throws Exception {
- this.begin = begin;
- this.end = end;
- if (stride > 0) {
- this.stride = stride;
- } else {
- throw new Exception("stride muss größer als 0 sein!");
- }
- }
- public Range(int begin, int end) {
- this.begin = begin;
- this.end = end;
- this.stride = 1;
- }
- public int getEnd() {
- return end;
- }
- public int getStride() {
- return stride;
- }
- public int getBegin() {
- return begin;
- }
- @Override
- public Iterator<Integer> iterator() {
- return new RangeIterator();
- }
- class RangeIterator implements Iterator<Integer> {
- private int current = begin;
- private boolean b = true;
- @Override
- public boolean hasNext() {
- if (begin == end)
- return b;
- if (begin > end)
- return (end <= current);
- if (begin < end)
- return (end >= current);
- return false;
- }
- @Override
- public Integer next() {
- int c = current;
- if (!hasNext())
- throw new NoSuchElementException("keine Elemente mehr!");
- if (begin < end)
- current = current + stride;
- if (begin > end)
- current = current - stride;
- if (begin == end)b=false;
- return c;
- }
- }
- public static void main(String[] args) throws Exception {
- Range r = new Range(100000,0, 1);
- for (Integer in : r) {
- System.out.println(in);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement