java - BinarySearch 中的变量声明

标签 java recursion binary binary-search

我正在开发一个java项目BinarySearch。我正在尝试创建并初始化一个变量 mid ,它将找出中间值,但它给我一个错误,您不能在此处声明变量。我也尝试过使用 split 声明,但它不起作用。这是我的一段代码:

 public static boolean binarySearch(int[] data, int target, int low, int high){
        if(low>high)
            return false;
        else
            int mid=(low + high )/2;
        if(target==data[mid]);
            return true;
        else if(target<data[mid])
            return binarySearch(data, target, low, mid - 1);
        else
            return binarySearch(data, target, mid + 1, high);


    }

我应该怎么做才能解决这个问题?

最佳答案

当你在 block 中声明变量时,你无法从 block 外访问它, 你应该将变量从 if 中删除并在 if 中更改他, 然后,当您使用 target==data[mid] 访问它时,程序将知道从哪里获取它。 例如:

public static boolean binarySearch(int[] data, int target, int low, int high){
    int mid;
    if(low>high)
        return false;
    else
        mid=(low + high )/2;
    if(target==data[mid]);
        return true;
    else if(target<data[mid])
        return binarySearch(data, target, low, mid - 1);
    else
        return binarySearch(data, target, mid + 1, high);


}

有关变量作用域的更多信息: Scope of Variables In Java

关于java - BinarySearch 中的变量声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58363485/

相关文章:

java - 使用 CrudRepository 仅插入一条记录

java - 哈夫曼树字符串表示

python - 使用列表打印有向图中的所有路径

ruby - 二进制字母排序 ruby

java - BorderLayout 中心间隙较大

java - 如何从代码中获取正在运行的 OSGi 容器信息(名称、版本等)?

java - 如何在java中将英文数字转换为中文

java - 为什么我的随机迷宫生成算法会在迷宫底部创建一个列模式?

c++ - 无法将整数写入二进制文件 C++

memory-leaks - Erlang 应用程序中观察到的内存泄漏