Я создал 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]));
}
}
Вы не включили класс Box. Ставятся ли члены класса Box? Их не должно быть. И 'toString',' calculateArea' и 'calculateVolume' также не должны быть статическими. – Eran
@Eran Отличный улов –
Да, они статичны ... как вы узнали ?! и изменит ли они проблему? Мне пришлось перевернуть его за 5 минут назад, я только что включил версию, напечатанную последним объектом 5 раз ха-ха. –