以下函数用于计算作为参数的排序列表的第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表达式要求,知道作为参数的参数必须声明为常量。
答案 0 :(得分:2)
答案是你无法做你想做的事。
您不能使用switch
语句。
改为使用if
语句。