2016-12-06 3 views
0

5 개의 Box 객체를 만들고 box라는 배열에 배치하고 정보를 인쇄하기 위해 반복합니다. 액세스되는 하나의 배열 객체가 성공적으로 인쇄되므로 메서드가 잘 작동합니다.for 루프는 카운터 변수가 증가하더라도 배열의 마지막 객체에만 액세스합니다.

그러나 내 for 루프는 마지막 개체에만 액세스하는 것으로 보입니다. 그 중 하나는 3.14,99.1 및 26.7입니다. 조건부 (x < boxes.length)가 제대로 작동하고 있으므로 5 번 인쇄됩니다. 어떻게 배열의 각 객체를 성공적으로 반복 할 수 있습니까?

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 클래스 멤버는 정적입니까? 그들은해서는 안됩니다. 그리고'toString','calculateArea','calculateVolume'도 정적이어서는 안됩니다. – Eran

+0

@Eran 그레이트 캐치 –

+0

그래, 그들은 정적 .. 어떻게 알았어?! 그들에게 문제를 수정하면 바뀔까? 나는 5 분 안에 그것을 돌려야 만했다. 나는 단지 버전 5의 마지막 물체를 인쇄했다. –

답변

-3

귀하의 방법은 정적 할 수 없습니다. Box 클래스를 toString으로 변경합니다. for (int x = 0; x < boxes.length; x ++) { System.out.println (boxes [x]);

+0

실제 문제와 관련이 없습니다. 즉, * fields *는'정적 '입니다. – Andreas

관련 문제