2015-05-08 69 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

相关问题