2016-12-06 2 views
0

5つのBoxオブジェクトを作成し、boxという名前の配列に配置し、それらの情報を出力するために反復処理します。アクセスされる1つの配列オブジェクトが正常に印刷されるので、メソッドが正常であることがわかります。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クラスを含めませんでした。 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

実際の問題とは何の関係もありません。*フィールド*は 'static'です。 – Andreas

関連する問題