2017-02-18 9 views
0

3つのintとStringを持つカスタムオブジェクトを作成し、そのオブジェクトをarrayListに格納したいが、問題があるようで、見つけられない正確に私の問題をオンラインで書いています。 fac.addにエラーが表示されます。こちらの2つの主な理由だコード異なるプリミティブ型のカスタムオブジェクトをArrayListに格納

package facility; 
import dal.DataAccess; 

public class FacilityInfo implements Facility { 

private int buildingNo, roomNo, capacity;; 
private String type; //classroom, conference room, office, etc. 

FacilityInfo(){}//default constructor 

FacilityInfo(int b, int r, int c, String t){ 
    this.buildingNo = b; 
    this.roomNo = r; 
    this.capacity = c; 
    this.type = t; 
} 
package dal; 
import java.util.*; 

import facility.FacilityInfo; 

public class DataAccess { 
    List<FacilityInfo> fac = new ArrayList<FacilityInfo>(); 
    fac.add(new FacilityInfo (1,2,10,conference));//changed code here 
} 
+0

のようなものを試してみてください。 – 4castle

+0

Sidenote:変数名がコンストラクタのパラメータと同じでない限り、グローバル変数を参照するのに 'this.'を使う必要はありません。 –

+0

@ MasterYushiデフォルトのコンストラクタは、コンストラクタが定義されていない場合にのみ自動的に行われます。 – 4castle

答えて

2

にいくつかの変更を加えたコード

**です。

まず、1,2,10,conferenceFacilityInfoオブジェクトではありません。 FacilityInfoの引数をListに追加することはできません。実際のオブジェクトを追加する必要があります。

第2に、コードブロックの外側にあるステートメントを持つことはできません。現在、クラス本体に直接fac.add(...);を呼び出しています。あなたは3 `int`フィールドを宣言している行に余分なセミコロンがあります

public class DataAccess { 
    List<FacilityInfo> fac = new ArrayList<FacilityInfo>(); 

    public void initializeFac() { 
     fac.add(new FacilityInfo(1,2,10,"conference")); 
     // etc. 
    } 
} 
+0

メソッドではなく、クラス本体で 'fac.add'がどのように呼び出されているかという問題もあります。 – 4castle

+0

はい、メソッド呼び出しはメソッド内にある必要があります –

+0

これを行い、メソッドを作成し、クラス本体の代わりにこのメソッドを作成しました。これは –

関連する問題