我有一个练习:定义一个incrementer类,从主类获取代码并给出结果:
package incr;
import static incr.Incrementer.*;
public class Test {
public static void main(String[] args) {
// simplest iteration - step = 1
for(int k : in(1, 10)) System.out.print(k + " ");
System.out.println();
// The given step
for(int k : in(1, 10).by(2)) System.out.print(k + " ");
System.out.println();
// It can be the other way around - step = -1 by default
for(int k : in(10, 1)) System.out.print(k + " ");
System.out.println();
// But the range can be made from min to max and the given step will be
// decide on the iteration direction
for(int k : in(1, 10).by(-1)) System.out.print(k + " ");
System.out.println();
// During the iteration, you can change the step
Incrementer inc;
for (int i : inc = in(1,10) ) {
if (i == 4) inc.by(2);
System.out.print(i + " ");
}
System.out.println();
for (int i : inc = in(1,10) ) {
if (i == 8) inc.by(-2);
System.out.print(i + " ");
}
System.out.println();
for(int k : inc = in(10, 1)) {
if (k == 5) inc.by(1);
System.out.print(k + " ");
}
}
}
给出了结果:
1 2 3 4 5 6 7 8 9 10
1 3 5 7 9
10 9 8 7 6 5 4 3 2 1
10 9 8 7 6 5 4 3 2 1
1 2 3 4 6 8 10
1 2 3 4 5 6 7 8 6 4 2
10 9 8 7 6 5 6 7 8 9 10
要求:程序(包括incrementer类)不能使用表或集合。
提示:
in(…)和by(…)是incrementer类中的方法incrementer应该实现iterable接口
我的问题是:当主测试类中没有define incrementer时,如何遍历方法?!--> for(int k : in(1, 10)) System.out.print(k + " ");
1条答案
按热度按时间wfauudbj1#
我想你应该可以通过定制的
Iterable<Integer>
如下图所示。基本上我把这些东西加进去了Incrementer
:Incrementer
有一个静态方法in()
它将接收范围开始和结束的两个整数,并返回Iterator
.在
iterator()
方法,我们将返回一个Interator<Integer>
这只会增加step
价值current
价值与回报。hasNext()
将确保下一个传入值保持在范围界限内。Incrementer
也会有一个by()
允许修改其成员变量的方法step
. 价值观start
以及end
将根据step
是积极的还是消极的我使用您提供的代码对其进行了测试,能够看到所需的输出。