interface Selector {
boolean end();
Object current();
void next();
}public class Sequence {
private static Test monitor = new Test();
private Object[] objects;
private int next = 0;
public Sequence(int size) { objects = new Object[size]; }
public void add(Object x) {
if(next < objects.length)
objects[next++] = x;
}
private class SSelector implements Selector {
private int i = 0;
public boolean end() { return i == objects.length; }
public Object current() { return objects[i]; }
public void next() { if(i < objects.length) i++; }
}
public Selector getSelector() { return new SSelector(); }
public static void main(String[] args) {
Sequence sequence = new Sequence(10);
for(int i = 0; i < 10; i++)
sequence.add(Integer.toString(i));
Selector selector = sequence.getSelector();
while(!selector.end()) {
System.out.println(selector.current());
selector.next();
}
}
} ///:~
这里的while是判断数组的length属性是否为0吗? 他能判断到了数组末尾吗?
谁来救救我啊.....
boolean end();
Object current();
void next();
}public class Sequence {
private static Test monitor = new Test();
private Object[] objects;
private int next = 0;
public Sequence(int size) { objects = new Object[size]; }
public void add(Object x) {
if(next < objects.length)
objects[next++] = x;
}
private class SSelector implements Selector {
private int i = 0;
public boolean end() { return i == objects.length; }
public Object current() { return objects[i]; }
public void next() { if(i < objects.length) i++; }
}
public Selector getSelector() { return new SSelector(); }
public static void main(String[] args) {
Sequence sequence = new Sequence(10);
for(int i = 0; i < 10; i++)
sequence.add(Integer.toString(i));
Selector selector = sequence.getSelector();
while(!selector.end()) {
System.out.println(selector.current());
selector.next();
}
}
} ///:~
这里的while是判断数组的length属性是否为0吗? 他能判断到了数组末尾吗?
谁来救救我啊.....
在这里是看内部类里end()方法返回值是否为真,如果到了数组末,end()方法返回真,while(!...)就是假,就退出循环了.
while 是判断当前指针i属否到达了数组的末尾。
public boolean end(){return i == objects.length;}
你的程序设计有问题,你要先明白你的设计思路:
index指针永远指向最后一个元素后面,也就是
index==objects.length永远返回true~
while(!selector.end()){
}
永远不会执行~~~你设计的这个index并不是你设想的指向最后一个元素的活动指针,
而是永远指向最后一个元素后面~
好好想想看,改一下~
当i==leng时 才算是结束
我试过不添加的时候 输出10个NULL这个ADD 自动调用的吗?
add 方法 就是给数组赋值
public void add(Object x){
if(next < objects.length)
objects[next++] = x;
}
你的设计next == objects.length永远成立,所以
你的add()里面的if添加数据永远都不可能执行~
sequence.add(Integer.toString(i));
如果我把数字改成100 会有隐患吗?
楼主这个程序是THINKING IN JAVA里的吧,我以前好像见过啊,呵呵,好好学,加油哦,另祝新年快乐!