从JAVA中的main访问函数内的数组或变量

时间:2017-12-26 11:28:41

标签: java arrays function arraylist

用于二进制搜索的给定简单代码

public static int binsearch(int [] a,int low, int high, int val) {
     ArrayList<Integer> arr = new ArrayList();

     if(a.length == 0)
       return -1;

     if(high < low)
       return -1;

     int mid = (low+high)/2;

     arr.add(mid);

     if(a[mid] == val)
       return mid;

     else if(val > a[mid])
        return binsearch(a,mid+1,high,val);

     else
        return binsea

     binsearch(a,low,mid-1,val);

    }

我已在函数内初始化了一个Arraylist。如果我想在JAVA中,如何从main访问该ArrayList。因为此函数返回数组中数字的索引(如果存在),而不是Arraylist。

3 个答案:

答案 0 :(得分:1)

您可以将方法传递给方法,而不是在方法中创建ArrayList

public static int binsearch(int [] a,int low, int high, int val, List<Integer> arr) {
    if(a.length == 0)      
        return -1;

     if(high < low)               
         return -1;
     ...
}

并从main调用方法:

List<Integer> list = new ArrayList<>();
int index = binsearch(a,0, a.length, value, list);

通话结束后,您将可以访问该列表。

答案 1 :(得分:1)

将数组列表声明为全局变量,并在函数binsearch()

中添加值
public class test{

static ArrayList<Integer> arr = new ArrayList();

public static void main(String[] args) {

    binsearch(.... pass values);

    //you can access array list here
}

public static int binsearch(int [] a,int low, int high, int val) {
    if(a.length == 0)
        return -1;

    if(high < low)
        return -1;

    int mid = (low+high)/2;

    arr.add(mid);

    if(a[mid] == val)
        return mid;
    else if(val > a[mid])
        return binsearch(a,mid+1,high,val);
    else
        return binsearch(a,low,mid-1,val);
    }
}

答案 2 :(得分:1)

全局声明数组列表,因为它在函数范围内,因此无法访问它。

使ArrayList<Integer> arr = new ArrayList();成为类的属性。