def longestPalindrome(s: String): String = {
val f = Array.ofDim[Boolean](1001,1001);
var len = s.length();
for (i<-0 to len-1; j<-i to len-1) {
f(i,j) = i match {
case j => true ;
case x if x==j-1 => if (s(i) == s(j)) true else false;
case y if y<j-1 => if (s(i) == s(j)) f(i+1,j-1) else false;
}
}
}
抱怨此行f(i,j) = i match {
:
第5行:错误:方法更新的参数太多:(i:Int,x:Array [Boolean])Unit
这意味着什么?我只是将匹配表达式的值赋给2-dim数组,会发生什么错误?
答案 0 :(得分:3)
您的问题是您尝试使用f(i,j)访问数组的元素。
你应该使用f(i)(j)
scala> val f = Array.ofDim[Boolean](1001,1001);
f: Array[Array[Boolean]] = Array(Array(false, false, false, false....
scala> f(1,1)
<console>:13: error: too many arguments for method apply: (i: Int)Array[Boolean] in class Array
f(1,1)
^
scala> f(1)(1)
res1: Boolean = false
答案 1 :(得分:1)
您遇到的错误是由于您没有使用正确的语法来访问2D数组。
要将其置于上下文中,访问数组中任意n
元素的语法是
array(n)
如果您考虑一下,2D数组只是一个数组数组,这意味着要访问内部数组,您可以执行类似
的操作val inner = nested(n)
inner(m)
或简而言之
nested(n)(m)