Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 向函数中添加正确的返回语句_Java - Fatal编程技术网

Java 向函数中添加正确的返回语句

Java 向函数中添加正确的返回语句,java,Java,答案可能是显而易见的,但即使在谷歌搜索之后,我仍然可以找到解决这个问题的正确方法。我知道我必须在函数的末尾添加一个return语句,这样它才能完成,但是什么样的语句呢 下面的程序实现了一种算法,可以在数组列表中查找第i个最小元素 public int search(ArrayList<Integer> a, int i){ ArrayList<Integer> smaller_than = new ArrayList<Integer>();

答案可能是显而易见的,但即使在谷歌搜索之后,我仍然可以找到解决这个问题的正确方法。我知道我必须在函数的末尾添加一个return语句,这样它才能完成,但是什么样的语句呢

下面的程序实现了一种算法,可以在数组列表中查找第i个最小元素

    public int search(ArrayList<Integer> a, int i){
    ArrayList<Integer> smaller_than = new ArrayList<Integer>();
    ArrayList<Integer> greater_than = new ArrayList<Integer>();
    int pivot = a.get(i);

    for(int j = 0; j < a.size(); j++) {
        if (a.get(j) <= pivot){
            smaller_than.add(a.get(j));}
        if (a.get(j) > pivot){
            greater_than.add(a.get(j));}}

    if (smaller_than.size() == i)
        return smaller_than.get(i);
    else if (smaller_than.size() < i)
        return search(greater_than, i-smaller_than.size());
    else if (smaller_than.size() > i)
        return search(smaller_than, i);
}
public int search(数组列表a,int i){
ArrayList小于=新ArrayList();
ArrayList大于=新ArrayList();
int pivot=a.get(i);
对于(int j=0;ji)
返回搜索(小于,i);
}

很明显,我不能在末尾添加return null,因此您能帮我找到解决方案吗?

只需将最后一个
if else
转换为
else
,因为如果它不相同或更小,它必须更大:

if (smaller_than.size() == i)
    return smaller_than.get(i);
else if (smaller_than.size() < i)
    return search(greater_than, i-smaller_than.size());
else
    return search(smaller_than, i);
if(小于.size()==i)
返回的值小于.get(i);
else if(小于.size()
只需将最后一个
if-else
转换为
else
,因为如果它不相同或更小,它必须更大:

if (smaller_than.size() == i)
    return smaller_than.get(i);
else if (smaller_than.size() < i)
    return search(greater_than, i-smaller_than.size());
else
    return search(smaller_than, i);
if(小于.size()==i)
返回的值小于.get(i);
else if(小于.size()
您的方法必须返回一个INTI如果缺少的return语句只是为了满足编译器的要求,您可以将return-1;最后,虽然我明白你想用你的算法实现什么,但我不明白你为什么把它弄得这么麻烦。看起来您首先实现了一个快速排序。为什么不用集合对列表进行排序。排序(…)(这可能是通过快速排序内部完成的)并从中提取第i个元素?没错,我本来可以这样做的,但我实际上是一名一年级学生,这是我们的任务之一:)好的。我已经猜到了=)我只是想强调Java Util类的使用;最后,虽然我明白你想用你的算法实现什么,但我不明白你为什么把它弄得这么麻烦。看起来您首先实现了一个快速排序。为什么不用集合对列表进行排序。排序(…)(这可能是通过快速排序内部完成的)并从中提取第i个元素?没错,我本来可以这样做的,但我实际上是一名一年级学生,这是我们的任务之一:)好的。我已经猜到了=)我只是想强调Java Util类的使用。