我从另一个类调用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);
}
}
答案 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
}