2016-12-06 17 views
0

Я создал 5 объектов Box, поместив их в массив с именами ящиков и хотел бы перебирать их, чтобы распечатать их информацию. Один объект массива, который получает доступ, печатается успешно, поэтому я знаю, что методы в порядке.for loop только обращается к последнему объекту массива, даже если счетная переменная увеличивается.

Но мой цикл for, кажется, касается только самого последнего объекта. Тот, который содержит 3.14,99.1 и 26.7 в качестве аргументов. Он печатает его 5 раз, поэтому я знаю, что условное (x < boxes.length) работает правильно. Как я могу успешно перебирать каждый объект в массиве?

import java.util.Scanner; 

public class BoxTest { 

    public static void main(String[] args) {   
     Box[] boxes= new Box[5]; 

     Scanner stdin = new Scanner(System.in); 

     System.out.print("Enter a height: "); 
     double height = stdin.nextDouble(); 

     System.out.print("Enter a width: "); 
     double width = stdin.nextDouble(); 

     System.out.print("Enter a length: "); 
     double length = stdin.nextDouble(); 


     Box first = new Box(width, length, height); 
     boxes[0] = first; 

     Box second = new Box(); 
     boxes[1] = second; 

     Box third = new Box(2,3.5,5.75); 
     boxes[2] = third; 

     Box fourth = new Box(6.66,4.20,9.11); 
     boxes[3] = fourth; 

     Box fifth = new Box(3.14,99.1,26.7); 
     boxes[4] = fifth; 

     for (int x = 0; x < boxes.length; x++) { 

      System.out.println(Box.toString(boxes[x]) + " Area: " + 
           Box.calculateArea(boxes[x]) + " Volume: " + 
           Box.calculateVolume(boxes[x])); 

     } 

}

+4

Вы не включили класс Box. Ставятся ли члены класса Box? Их не должно быть. И 'toString',' calculateArea' и 'calculateVolume' также не должны быть статическими. – Eran

+0

@Eran Отличный улов –

+0

Да, они статичны ... как вы узнали ?! и изменит ли они проблему? Мне пришлось перевернуть его за 5 минут назад, я только что включил версию, напечатанную последним объектом 5 раз ха-ха. –

ответ

-3

Ваши методы не должны быть статичными. Изменить класс класса toString. для (int x = 0; x < boxes.length; x ++) { System.out.println (boxes [x]);

+0

Это не имеет ничего общего с реальной проблемой, которая заключается в том, что * поля * являются 'static'. – Andreas