![]() |
1
2
Java使用传递值,因此不能更改参数(虽然参数是用户定义的对象,但可以更改由参数指向的对象,而不是参数本身)。 不过,您可以考虑的一件事是创建迭代器类型接口: // RangeIterator.java public class RangeIterator implements Iterator<Integer> { public RangeIterator(int first, int last){ _first = first; _last = last; if ( _first <= _last ){ _step = 1; }else{ _step = -1; } } public RangeIterator(int first, int last, int step){ if ( step == 0 ){ throw new IllegalArgumentException("Step must be non-zero."); } _first = first; _last = last; _step = step; } public boolean hasNext(){ if ( _step < 0 ){ return _first > _last; } else { return _first < _last; } } public Integer next(){ int result = _first; _first += _step; return result; } public void remove(){ throw new UnsupportedOperationException("Not implemented."); } private int _first; private int _last; private int _step; } // Range.java public class Range implements Iterable<Integer> { public Range(int first, int last){ _first = first; _last = last; if ( _first <= _last ){ _step = 1; }else{ _step = -1; } } public Range(int first, int last, int step){ if ( step == 0 ){ throw new IllegalArgumentException("Step must be non-zero."); } _first = first; _last = last; _step = step; } public Iterator<Integer> iterator(){ return new RangeIterator(_first,_last,_step); } private int _first; private int _last; private int _step; } 使用上面的代码,您可以方便地编写如下内容: Range range = new Range(x,100); for (int val : range){ println(val); } 因为我看到你来自python的背景,所以感觉应该非常像: for val in xrange(x,100): print val;
您可以实现
Iterable
和
Iterator
接口,以提供您自己的生成器,可以在Java中为每个循环使用。基本上,
|
![]() |
2
0
爪哇
总是
传球
|