如何使用Scala中的变量调用数组中的项?

时间:2017-10-07 17:51:00

标签: arrays scala

我正在尝试编写一个循环遍历整数数组寻找零的函数。它看起来像这样:

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)

任何人都可以解释为什么,或者我应该做些什么呢?

1 个答案:

答案 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)