【发布时间】:2015-03-12 19:43:57
【问题描述】:
def filter(data : List[Int]) : List[Int] = {
if(data.length == 0){
return data;
}else{
var list: List[Int] = List();
var index = 0;
for((value,index) <- data.zipWithIndex){
if(list(index) == list(index+1){
list = value :: list;
//println(list(index));
}
}
}
return list
}
}
我的功能有问题。 'data' 是一个整数数组,此函数需要过滤所有相邻的重复项。例如 {1,2,3,3,4,3,1} 将是 {1,2,3,4,3,1} 的过滤器。此函数当前正在抛出数组越界异常。我在 scala 方面的知识非常有限,因此由于缺乏知识,请保持所有答案简单。感谢您提供的所有帮助:D。
【问题讨论】:
-
index+1超出了最后一个列表元素的范围。此外,您正在以相反的顺序构建列表。您可能想要使用ListBuffer或使用递归方法而不是使用for。 -
我的想法是使用 .reverse 将列表复制到另一个列表中
标签: list scala if-statement for-loop filter