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