2015-05-08 71 views
0

我有一個問題。我無法解決它,我需要一些幫助。我有對象的ArrayList那麼我在其中創建並添加到ArrayList對象的方法,但我想另一種方法,我可以打印的ArrayList,但每次我嘗試了數組列表是空的,所以這是我的代碼:將對象添加到Arraylist並在方法外使用方法

public class Packages{ 
    ArrayList<Pack> myList = new ArrayList<Pack>(); 
    Pack obj; 

    public double addPackage(int type, double num){ 
     if(type==1) 
     { 
     obj = new Pack(type, num); 
     total = obj.calculateTotal; 
     } 
     else 
     { 
     obj = new Pack(type, num); 
     total = obj.calculateTotal; 
     } 
     myList.add(obj); 
     return total; 
    } 
    public int listSize(){ 
     return myList.size(); 
    } 
} 

每當我調用listSize()方法時,它將返回0,看起來像addPackage方法完成時它刪除我添加到我的Arraylist中的對象。 注:我的addPackage方法將返回一個雙重總數,但同時將我創建的對象添加到數組列表。我需要一些幫助。

+3

顯示你在哪裏調用兩種方法。 – Kon

+6

另外,你是否意識到如果和其他人完全一樣呢?爲什麼obj是一個領域?它應該是一個局部變量。 –

+2

你的代碼或者至少顯示的東西都可以正常工作,雖然它有點奇怪,因爲我認爲'calculateTotal'應該是一個方法,而不是一個屬性,'obj'應該是一個局部變量,你的if/else是完全的冗餘等。 –

回答

2

我試過你的代碼,它幾乎是正確的。我再次發佈類,我用和工作:

public class Package { 
    List<Pack> myList = new ArrayList<Pack>(); 
    Pack obj; 
    double total = 0; 

    public double addPackage(int type, double num) { 
     if (type == 1) { 
      obj = new Pack(type, num); 
      total = obj.calculateTotal(); 
     } else { 
      obj = new Pack(type, num); 
      total = obj.calculateTotal(); 
     } 
     myList.add(obj); 
     return total; 
    } 

    public int listSize() { 
     return myList.size(); 
    } 
} 

現在類包是:

public class Pack { 
    int type; 
    double value; 

    public Pack(int type, double value) { 
     this.type = type; 
     this.value = value; 
    } 

    public double getValue() { 
     return value; 
    } 

    public void setValue(double value) { 
     this.value = value; 
    } 

    public int getType() { 
     return type; 
    } 

    public void setType(int type) { 
     this.type = type; 
    } 

    public double calculateTotal() { 
     return type*value; 
    } 
} 

而且我在此代碼驗證:

public static void main(String[] args) { 
     Package pkg = new Package(); 
     pkg.addPackage(10,10); 
     pkg.addPackage(10,20); 
     System.out.println(pkg.listSize()); 

    } 

和預期它返回2。所有這些課程可能與您所擁有的課程不完全相同,但它會讓您瞭解您缺少的內容。

+0

你給了我一個想法我認爲這個問題出現在我的驅動程序類中。如果我有一個GUI類,並且像我們一樣添加數據,但是我使用2個Jtextfields和一個按鈕來添加包(它調用addPackage方法),另一個按鈕來打印arraysize(它調用listSize方法)會怎樣?每次我點擊addpackage按鈕它重置以前的數據? – Javier

+0

如果這兩個按鈕在'Package'的相同實例上調用方法,那麼它應該工作,只要代碼被正確寫入。 –

+0

它現在的作品,謝謝你!我在buttonlistener裏面創建了Package對象,這是我的錯誤。它非常簡單... – Javier

相關問題