从另一个类调用ArrayList

时间:2015-02-16 19:07:14

标签: java class arraylist calling-convention

我从另一个类调用arraylist时遇到问题。我在其中定义了一个名为IntBag的类和一个arraylist包。在main方法中,我想编写一个程序,使我能够从另一个类中更改arraylist的长度。当我尝试时,我得到一个"找不到符号"错误。你能帮忙吗?

import java.util.*;
public class IntBag 
{
   private static ArrayList<Integer> bag = new ArrayList<Integer>(); 
   private int maxNumber;

   public IntBag(ArrayList bag, int maxNumber) 
   {
       this.bag = bag;
       this.maxNumber = maxNumber;  
   }

   public static ArrayList getBag()
   {
       return bag;
   }

   public int sizeArray(ArrayList bag)
   {    
    return bag.size();
   }
}
public class test
{

    public static void main(String[] args) 
    {
        Scanner scan = new Scanner(System.in);
        int choice, size;
        IntBag.getBag();
        System.out.println("Enter the size of an array : ");
        size = scan.nextInt();
        bag = new ArrayList<Integer>(size); 
     }
}

1 个答案:

答案 0 :(得分:1)

IntBag是一个非静态类,意味着要使用它,你必须创建该类的新实例。为此,您可以执行以下操作:

IntBag name_of_object = new IntBag();

然后,要引用此对象内部的包,您可以通过调用:

来访问它
name_of_object.getBag();

要从备用类更改ArraryList的大小,您需要在IntBag类中包含setter方法:

public void setBag(ArrayList<Integer> newList) {
    this.bag = newList;
}

然后,在您的替代课程中,您可以执行以下操作:

IntBag bag = new IntBag(new ArrayList<Integer>(), 10);
bag.setBag(new ArrayList<Integer>())

您还可以为maxnumber变量创建类似的setter:

public void setMaxNumber(int max) {
    this.maxNumber = max;
}

但请注意,ArrayLists没有最大或最小尺寸。当您添加或删除变量时,它们会扩大或缩小。

放置代码的位置?

好好想想。在您的主类中,您已经创建了一个对象,如扫描仪和两个整数。您只需以相同的方式创建IntBag对象,您需要使用它。因此,您的主要方法可能如下所示:

public static void main(String[] args) 
{
    Scanner scan = new Scanner(System.in);
    int choice, size;

    System.out.println("Enter the size of an array : ");
    size = scan.nextInt();

    ArrayList<Integer> bag = new ArrayList<Integer>(); // arrraylists do not have a size. They automatically expand or decrease

    IntBag intBag = new IntBag(bag, 30); // creates a new IntBag object 
 }