函数参数作为case表达式

时间:2015-02-03 16:34:02

标签: java

以下函数用于计算作为参数的排序列表的第i个最小元素。 我想在我的函数中使用“ switch ”表达式而不是“ if ”。

编译器给出了以下错误:“ case表达式必须是常量表达式

请注意,该功能显然不完整。

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

    for (int j = 0; j < a.length; j++) {
        if (a[j] < pivot) {
            smaller_than.add(a[j]);
        }

        if (a[j] >= pivot) {
            greater_than.add(a[j]);
        }
    }

    switch (smaller_than.size()) {    
        case i:
            return greater_than.get(1); <----    
    }

    return 0;
}

我想知道如何满足case表达式要求,知道作为参数的参数必须声明为常量。

1 个答案:

答案 0 :(得分:2)

答案是你无法做你想做的事

您不能使用switch语句。

改为使用if语句。