我正在尝试创建一个返回数组中偶数值的函数.到目前为止,我有以下代码,但它不起作用:
(a: Array[Int]): Int = {
var howManyEven = 0
for(i <-0 to a.length) {
if(a(i)%2==0){
howManyEven+= 1
}
howManyEven
}
Run Code Online (Sandbox Code Playgroud)
另外,由于某种原因,我很难过如何返回数组中奇数值的数量.我的方法关闭了吗?我想我只是想知道用什么方法来生成我想要的输出.
您有一个差一错误(忽略其他拼写错误和遗漏的信息),在你试图从去0到a.length.但如果长度是10,那么你将从0到10,这是11个指数.它应该是a.length - 1.
您可以避免使用功能方法来解释一个错误.使用集合库中的标准方法可以在一行中完成相同的操作.
def howManyEven(a: Array[Int]): Int = a.count(_ % 2 == 0)
scala> howManyEven(Array(1, 2, 3, 4, 6, 8, 9, 10, 11))
res1: Int = 5
Run Code Online (Sandbox Code Playgroud)
count是集合库中的一个方法,它计算集合中满足Boolean属性的元素.在这种情况下,检查元素是否均匀.
我建议读一下List上可用的方法.Scala集合库非常丰富,并且几乎可以为您提供任何方法.这只是找到正确的(或组合)的问题.正如您所看到的,设置循环和使用可变变量的Java方法往往容易出错,而在Scala中最好避免这种情况.