Java 如何调用Arraylist方法?

Java 如何调用Arraylist方法?,java,methods,arraylist,Java,Methods,Arraylist,我有一个方法: public static ArrayList<Integer>Iterate(int n){ ArrayList<Integer> numbers = new ArrayList<Integer>(n);{ Random rand = new Random(); rand.setSeed(System.currentTimeMillis()); for(int i = 0; i<n

我有一个方法:

public static ArrayList<Integer>Iterate(int n){
    ArrayList<Integer> numbers = new ArrayList<Integer>(n);{
        Random rand = new Random();
        rand.setSeed(System.currentTimeMillis());
        for(int i = 0; i<n; ++i){
            Integer r = rand.nextInt() %113;
            numbers.add(r);
            Collections.sort(numbers);
        }}
诸如此类,但Eclipse说数字不能解析为变量
那么,调用ArrayList的正确方法是什么,这样一个方法就可以实现它

数字
需要在您的方法之外声明,以便其他方法能够访问它。如果在方法内声明变量,则其作用域就是在其中声明的方法

如果选择,您仍然可以在方法内部初始化变量,但必须在外部进行声明,如下所示:

ArrayList<Integer> numbers = null;

public static ArrayList<Integer> Iterate(int n){
    numbers = new ArrayList<Integer>(n);
    // code
}
arraylistnumber=null;
公共静态数组列表迭代(int n){
编号=新阵列列表(n);
//代码
}

因为您在Iterate方法中声明了numbers变量,所以它不存在于该方法的范围之外。这意味着,当您在main中时,无法访问该变量。如果要访问main中的变量,则需要在main中声明该变量。

您可能希望让您的方法返回它创建的
ArrayList
,以便它可以被称为您的方法的任何方法使用。您已经获得了正确的方法签名-即,第一行,其中显示

public static ArrayList<Integer> Iterate(int n){
现在,在您的
main
方法中,或者在任何其他方法调用此方法的情况下,您可以编写如下内容

ArrayList<Integer> returnedList = Iterate(10);
arraylistreturnedlist=Iterate(10);

或者类似的,取决于要传递给该方法的数字。这将声明一个名为
returnedList
的变量,调用该方法,并将该方法返回的
ArrayList
分配给您声明的变量。

在方法
迭代
之外声明
numbers
。现在,只有方法
Iterate
可以访问该变量。请阅读OOP或Java的基本指南……您的方法声明为返回ArrayList,所以您可能会返回它,对吗?你从main打电话给它,对吗?在main中,您将其返回值分配给什么?另外,为什么每次向列表中添加数字时都对列表进行排序?在您的方法中,似乎从未返回
ArrayList
。只需在方法中返回
numbers
,然后在
main
中执行类似于
ArrayList list=Iterate(someValue)
的操作。然后,您可以调用
列表上的方法。谢谢,但当我尝试此操作时,它会说:“无法对非静态字段编号进行静态引用”使其正常工作的简短回答:
static ArrayList numbers=null-------------------------------------回答得好:在完成这项作业或其他任何内容后,我建议您阅读或观看有关基本OOP的教程。如果你以前也曾匆匆忙忙地完成过任务,那么如果你不真正理解你正在编写的代码,你就走不了多远。
return numbers;
ArrayList<Integer> returnedList = Iterate(10);