package InnerClasses;import java.util.Random;
import static Test_purview.print.*;
class Word {
private String word;
public Word(String s) { word = s; }
public String toString() { return word; }
}interface Selector {
boolean end();
Object current();
void next();
}public class Test_Exercise2 {
private Object[] items;
private int next = 0;
public Test_Exercise2(int size) { items = new Object[size]; }
public void add(Object x) {
if(next < items.length)
items[next++] = x;
}
// 下面是内部类,内部类可以使用外部类的方法和字段
private class SequenceSelector implements Selector {
private int i = 0;
public boolean end() { return i == items.length; }
public Object current() { return items[i]; }
public void next() { if(i < items.length) i++; }
}
public Selector selector() {
return new SequenceSelector();
}
public static void main(String[] args) {
Test_Exercise2 sequence = new Test_Exercise2(10);
for(int i = 0; i < 10; i++)
sequence.add(new Word(Integer.toString(i)));
Selector selector = sequence.selector();
while(!selector.end()) {
System.out.print(selector.current() + " ");
selector.next();
}
Word w1 = new Word("Peace");
Word w2 = new Word("Love");
Word w3 = new Word("Easter");
Test_Exercise2 message = new Test_Exercise2(3);
message.add(w1);
message.add(w2);
message.add(w3);
Selector sel = message.selector();
while(!sel.end()) {
System.out.print(sel.current() + " ");
sel.next();
} }
}

解决方案 »

  1.   

    import static Test_purview.print.*;去掉这行试试
      

  2.   

    import java.util.Random;
    import static Test_purview.print.*;这两句没有用,删了吧。另外执行没问题
      

  3.   

    //创建大小为10的数组items
    Test_Exercise2 sequence = new Test_Exercise2(10);public Test_Exercise2(int size) {
    items = new Object[size];
    }//用add循环给数组items元素赋值
    for (int i = 0; i < 10; i++)
    sequence.add(new Word(Integer.toString(i)));public void add(Object x) {
    if (next < items.length)
    items[next++] = x;
    }
    //selector方法创建内部类,selector指向new SequenceSelector()。内部类引用selector使用外部类数组items的值。
    Selector selector = sequence.selector();public Selector selector() {
    return new SequenceSelector();
    }//内部类调用end方法判断循环是否达到数组items长度;使用current遍历items内的元素;使用next执行下一个循环
    while (!selector.end()) {
    System.out.print(selector.current() + " ");
    selector.next();
    }public boolean end() {
    return i == items.length;
    }