在java中打印特定大小的数组

时间:2014-11-13 08:39:48

标签: java arrays

我试图打印出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());
            }
        }
    }

1 个答案:

答案 0 :(得分:3)

你可以为每个案件使用 break; 吗?

你的数组实际上有10个元素。但它将每个元素的内容放在最多三次 - 因为控制在不同情况下继续进行。因此,如果情况0是正确的,它将放置三个形状并打印三个打印件。如果情况1是正确的,它将放置两个形状并打印两个打印件。

如果你在每个案例之后放置break,那么在每次迭代时,它只会放置一个形状并打印一次。