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

在JAVA中,从main访问函数中的数组或变量,java,arrays,function,arraylist,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;

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

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);

    }
公共静态int-bin搜索(int[]a,int-low,int-high,int-val){
ArrayList arr=新的ArrayList();
如果(a.length==0)
返回-1;
如果(高<低)
返回-1;
int mid=(低+高)/2;
arr.add(mid);
如果(a[mid]==val)
中途返回;
如果(val>a[mid])
返回b搜索(a、中+1、高、val);
其他的
返回料仓
b搜索(a、低、中1、val);
}

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

而不是在方法中创建
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;
     ...
}

调用后,您将可以访问该列表。

将数组列表声明为全局变量,并在函数
binsearch()中添加值。

公共类测试{
静态ArrayList arr=新ArrayList();
公共静态void main(字符串[]args){
b搜索(……通过值);
//您可以在这里访问数组列表
}
公共静态int-bin搜索(int[]a、int-low、int-high、int-val){
如果(a.length==0)
返回-1;
如果(高<低)
返回-1;
int mid=(低+高)/2;
arr.add(mid);
如果(a[mid]==val)
中途返回;
如果(val>a[mid])
返回b搜索(a、中+1、高、val);
其他的
返回箱搜索(a、低、中1、val);
}
}

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


Make
ArrayList arr=new ArrayList()类的属性。

您不能直接访问,因为它是本地方法。你可以让它在课堂上保持静止。或者将其与索引一起返回。是否在此方法之外的其他位置定义ArrayList?你正被这个变量的范围所限制。超基本的东西,无数次的询问,在任何一本好书中都有解释。
List<Integer> list = new ArrayList<>();
int index = binsearch(a,0, a.length, value, list);
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);
    }
}