java - if、else if、else 语句中的 return 语句不起作用

标签 java

我在代码中偶然发现了一些问题,据说返回会停止我的方法,但就我而言并非如此。我尝试创建一种名为“binarySearch”的方法,据说它可以完成其应做的事情。

public int binarySearch(int lowIndex, int highIndex, int[] arr, int val) {
    int middleIndex = (lowIndex + highIndex ) / 2;
    if(arr[middleIndex] < val) {
        lowIndex = middleIndex;
    } else if (arr[middleIndex] > val) {
        highIndex = middleIndex;
    } else {
        return middleIndex;
    }
    binarySearch(lowIndex, highIndex, arr, val);
    return 0;
}

问题是如果我已经找到了搜索值所在的索引,否则语句将返回它并已经停止。但相反,我总是得到“0”,我认为这是我为默认返回设置的值 return 0 。因此,为了澄清一些问题,我在 else 语句上添加了一些文本,以确保它执行并返回 middleIndex ,然后文本出现,所以基本上我的循环进入 else 语句并希望返回 middleIndex但事实并非如此。也许递归与此有关,但我不知道你们是否可以帮助我。

最佳答案

由于您的方法的签名为 public int binarySearch,这意味着您应该从 binarySearch 方法的递归调用中返回 int。在该方法的正确实现中,您实际上不应该return 0

关于java - if、else if、else 语句中的 return 语句不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51277278/

相关文章:

java - while循环中的多个条件

java - 查找特定日期某个时间的天数、小时数和分钟数

java - json 解析新手 - 如何获取数组中的数组

java - 包含相同接口(interface)的类实现接口(interface)

java - 将一系列信号送入电线

java - 是否可以解决不使用更广泛的异常“System.Exception”的问题?

java - 如何处理 Spring 表达式语言中的列表列表

java - Hive UDAF中的NullPointException

java - 匹配双引号但不匹配反斜杠双引号的正则表达式

java - 使用正则表达式 (java) 的 ASCII 字符检查