2014-11-13 4 views
0

Я пытаюсь распечатать массив из 10 объектов. По какой-то причине, хотя, когда я распечатываю массив, в массиве есть от 15 до 22 элементов. Я не могу понять, почему. Может ли кто-нибудь указать мне в правильном направлении?Печать массива определенного размера в java

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

Вы не печатаете массив в этом коде. У вас есть цикл из 10 итераций, и на каждой итерации вы печатаете одну строку. Можете ли вы показать результат, который у вас есть? – Eran

+0

Вы создали массив размером 10. Он не может содержать более 10 элементов. В противном случае вы получите исключение ArrayIndexOutOfBoundsException. – Udo

+0

Я не думаю, что это вызовет исключение ArrayIndexOutOfBoundsException. Но он определенно напечатает (System.out.println) более 10 элементов, учитывая, что значение формы не всегда равно 2. – Kartic

ответ

3

Можете ли вы использовать break; для каждого случая?

В вашем массиве имеется 10 элементов. Но он помещает контент в каждый элемент до трех раз - потому что управление продолжается от случая к случаю. Таким образом, если регистр 0 прав, он будет помещать три фигуры и печатать три отпечатка. Если регистр 1 верен, он поместит две фигуры и напечатает два отпечатка.

Если вы положили break после каждого случая, то на каждой итерации он просто поместит одну форму и напечатает только один раз.

Смежные вопросы