Java 如何修复方法无法应用于给定类型

Java 如何修复方法无法应用于给定类型,java,arrays,Java,Arrays,我正在创建一个程序来进行二进制搜索 这个方法应该重复不同的次数,我想打印出重复这个方法所花的时间 他们的方式代码是现在我得到一个错误,而编译方法二进制搜索无法编译为给定的类型,我不知道如何修复它 public class Bin_search { public static void main(String[] args) { int z = Integer.parseInt(args[0]); double k = (int)(Math.random(

我正在创建一个程序来进行二进制搜索

这个方法应该重复不同的次数,我想打印出重复这个方法所花的时间

他们的方式代码是现在我得到一个错误,而编译方法二进制搜索无法编译为给定的类型,我不知道如何修复它

public class Bin_search  {
    public static void main(String[] args) {
        int z = Integer.parseInt(args[0]);
        double k = (int)(Math.random()*1000001);
        int n = 1000000;
        int arr[] = new int[n];
        int i = 0;
        for(i = 0;i<n;i++){
            arr[i] = i;
        }
        long startTime = System.currentTimeMillis();
        for(int t= 0; t<z; t++) {
        binarySearch();
        }
        long stopTime = System.currentTimeMillis();
        long elapsedTime = stopTime - startTime;
        System.out.println("It took " + elapsedTime + " ms to repeat the algorithm.");
        }
        int binarySearch(int n, double k, int arr[]) {
            int li = 0;
            int re = n+1;
            int m;
            while (li <  re-1) {
                m = (li + re) / 2;
                if (k <=arr[m]){
                    re = m;
                }
                else{
                    li = m;
                }
            }
            return re;
        }
}
公共类Bin\u搜索{
公共静态void main(字符串[]args){
intz=Integer.parseInt(args[0]);
双k=(int)(Math.random()*1000001);
int n=1000000;
int arr[]=新的int[n];
int i=0;

对于(i=0;i首先,binarySearch方法由三个参数组成,并且您没有提供它们,其次,您应该将binarySearch方法设置为静态,否则在不首先创建实例的情况下,无法从主方法调用它

我想应该是这样的

public class Main  {
    public static void main(String[] args) {
        args = new String[3];
        args[0] = "100";
        int z = Integer.parseInt(args[0]);
        double k = (int)(Math.random() * 1000001);
        int n = 1000000;
        int arr[] = new int[n];
        int i = 0;
        for(i = 0;i<n;i++){
            arr[i] = i;
        }
        long startTime = System.currentTimeMillis();
        for(int t= 0; t<z; t++) {
        binarySearch(n, k, arr);
        }
        long stopTime = System.currentTimeMillis();
        long elapsedTime = stopTime - startTime;
        System.out.println("It took " + elapsedTime + " ms to repeat the algorithm.");
        }

    static int binarySearch(int n, double k, int arr[]) {
            int li = 0;
            int re = n+1;
            int m;
            while (li <  re-1) {
                m = (li + re) / 2;
                if (k <=arr[m]){
                    re = m;
                }
                else{
                    li = m;
                }
            }
            return re;
        }
}
公共类主{
公共静态void main(字符串[]args){
args=新字符串[3];
args[0]=“100”;
intz=Integer.parseInt(args[0]);
双k=(int)(Math.random()*1000001);
int n=1000000;
int arr[]=新的int[n];
int i=0;

对于(i=0;i请,发布你的StackTrace我现在可以编译它,但是当我想尝试代码时,我得到的错误是找不到或加载main类。我也用你的代码尝试过,得到了相同的eror。发生这种情况是因为我已将你的类从Binu search重命名为main,只需再次更改它,它就会工作。不,这与它无关,我只是无法更改。)将java“程序”从1秒卸载到另一秒。我想说,错误引用了安装JDK时必须设置的系统变量。尽管它们设置正确。一天后,我随机重新开始工作。现在我需要运行java“程序”在使用java classname.java的编译器中,它不是它应该的样子,但我很高兴它至少又能工作了。