我试图打印出10个对象的数组。但是出于某种原因,当我打印出数组时,数组中有15到22个元素。我无法弄清楚原因。有人可以指出我正确的方向吗?
import java.util.Random;
public class Main {
public static void main( String[] args ) {
Shape[] myShapes = new Shape[10]; //Array of 10 shapes
Random rand = new Random(); //Random number generator
int shape, x1, y1, x2, y2, x3, y3;
double radius;
for( int i = 0; i < 10; i++ ) {
shape = rand.nextInt(3); //randomly select shape
switch( shape ) {
case 0: //Triangle
x1 = rand.nextInt(101);
y1 = rand.nextInt(101);
x2 = rand.nextInt(101);
y2 = rand.nextInt(101);
x3 = rand.nextInt(101);
y3 = rand.nextInt(101);
myShapes[i] = new Triangle( x1, y1, x2, y2, x3, y3 );
System.out.println("Triangle: " + myShapes[i].area());
case 1: //Rectangle
x1 = rand.nextInt(101);
y1 = rand.nextInt(101);
x2 = rand.nextInt(101);
y2 = rand.nextInt(101);
myShapes[i] = new Rectangle( x1, y1, x2, y2 );
System.out.println("Rectangle: " + myShapes[i].area());
case 2: //Circle
radius = rand.nextDouble()*100.0;
x1 = rand.nextInt(101);
y1 = rand.nextInt(101);
myShapes[i] = new Circle( radius, x1, y1 );
System.out.println("Circle: " + myShapes[i].area());
}
}
}
答案 0 :(得分:3)
你可以为每个案件使用 break; 吗?
你的数组实际上有10个元素。但它将每个元素的内容放在最多三次 - 因为控制在不同情况下继续进行。因此,如果情况0
是正确的,它将放置三个形状并打印三个打印件。如果情况1
是正确的,它将放置两个形状并打印两个打印件。
如果你在每个案例之后放置break
,那么在每次迭代时,它只会放置一个形状并打印一次。