我正在尝试编写一个循环遍历整数数组寻找零的函数。它看起来像这样:
def fullIntArray(arr:Array[Int]): Boolean = {
var counter = 0;
for(a <- 1 to arr.length by 1){
if(arr(a) != 0){
counter += 1;
}
}
if(counter == arr.length){
return true;
}else{
return false;
}
}
我从
获得ArrayIndexOutOfBoundsException
arr(a)
任何人都可以解释为什么,或者我应该做些什么呢?
答案 0 :(得分:4)
您将获得异常,因为Array
中第一个元素的索引为零,而不是一个。以下作品(by 1
很好但不必要):
for (a <- 0 to arr.length - 1 by 1) {
if (arr(a) != 0) {
counter += 1
}
}
以下情况也是如此,正如@puhlen建议的那样:
for (a <- 0 until arr.length) {
...
}
但是,实现功能的更好方法是:
def fullIntArray(arr: Array[Int]): Boolean = arr.forall(_ != 0)