62,614
社区成员
发帖
与我相关
我的任务
分享
public class RandomShapeIterable implements Iterator<Shape> {
private Random rand = new Random(27);
private final int generateShapeNum;
public RandomShapeIterable( int generateShapeNum ) {
this.generateShapeNum = generateShapeNum;
}
public Iterator<Shape> iterator() {
return new Iterator<Shape>() {
private int num = 0;
public boolean hasNext() {
return num < generateShapeNum;
}
public Shape next() {
num++;
switch(rand.nextInt(3)) {
default:
case 0: return new Circle();
case 1: return new Square();
case 2: return new Triangle();
}
}
public void remove() {
throw new UnsupportedOperationException();
}
};
}
public static void main(String[] args) {
for (Shape s : new RandomShapeIterable(10)) {
s.draw();
s.erase();
}
}
}
class RandomShapeGenerator implements Iterable<Shape> {
private Random rand = new Random(47);
private final int quantity;
RandomShapeGenerator(int quantity) {
this.quantity = quantity;
}
public Iterator<Shape> iterator() {
return new Iterator<Shape>() {
private int count;
public boolean hasNext() {
return count < quantity;
}
public Shape next() {
++count;
return nextShape();
}
public void remove() { // Not implemented
throw new UnsupportedOperationException();
}
};
}
private Shape nextShape() {
switch (rand.nextInt(3)) {
default:
case 0:
return new Circle();
case 1:
return new Square();
case 2:
return new Triangle();
}
}
}
public class E31_IterableRandomShapeGenerator {
public static void main(String[] args) {
RandomShapeGenerator rsg = new RandomShapeGenerator(10);
for (Shape shape : rsg)
System.out.println(shape.getClass().getSimpleName());
}
}
import java.util.*;
import static tij.util.Print.*;//静态引入,环境不同要变。
public class RandomShapeIterable implements Iterator<Shape>
{
private Random rand = new Random(27);
private final int generateShapeNum;
public RandomShapeIterable( int generateShapeNum )
{
this.generateShapeNum = generateShapeNum;
}
private int num = 0;
public boolean hasNext()
{
return num < generateShapeNum;
}
public Shape next()
{
num++;
switch(rand.nextInt(3))
{
default:
case 0: return new Circle();
case 1: return new Square();
case 2: return new Triangle();
}
}
public void remove()
{
throw new UnsupportedOperationException();
}
public static void main(String[] args)
{
RandomShapeIterable rsi=new RandomShapeIterable(10);
Shape s=null;
while(rsi.hasNext())
{
s=rsi.next();
s.draw();
s.erase();
}
}
}
class Shape
{
public void draw() {}
public void erase() {}
}
class Circle extends Shape
{
public void draw() { print("Circle.draw()"); }
public void erase() { print("Circle.erase()"); }
}
class Square extends Shape
{
public void draw() { print("Square.draw()"); }
public void erase() { print("Square.erase()"); }
}
class Triangle extends Shape
{
public void draw() { print("Triangle.draw()"); }
public void erase() { print("Triangle.erase()"); }
}