我试图将用户输入带到数组并使用Scala打印。但是出了点问题。
def abc()={
var n:Int=0
var m:Int=0
var i:Int=0
var j:Int=0
print("Enter The Length Here:")
n=scala.io.StdIn.readInt
var z= new Array[Int](n)
while(n>i){
print("Enter The Num :")
m=scala.io.StdIn.readInt
z[i]=m
i+=1
}
for(j <- 0 to n){
print(z[j])
j=j+1
}
} abc()
答案 0 :(得分:4)
以下是更惯用的Scala中的版本:
def abc() = {
print("Enter The Length Here:")
val n: Int = scala.io.StdIn.readInt
val z = (1 to n).map{ i =>
print(s"Enter value $i: ")
scala.io.StdIn.readInt
}
z.foreach(print)
}
abc()
不需要var
或for
答案 1 :(得分:2)
这是您的代码段的正确版本:
def abc() = {
var n: Int = 0
var m: Int = 0
var i: Int = 0
var j: Int = 0
print("Enter The Length Here:")
n = scala.io.StdIn.readInt
var z = new Array[Int](n)
while (n > i) {
print("Enter The Num :")
m = scala.io.StdIn.readInt
z(i) = m
i += 1
}
for (j <- 0 until n) {
print(z(j))
}
}
abc()
使用(index)
而不是[index]
来按Array
中的索引获取元素或分配值。
使用for (j <- 0 to n)
是不正确的,因为您可以使用ArrayIndexOfBoundException
而不是until
来to
,所以for (j <- 0 until n)
是正确的。 / p>
不需要像j = j + 1
那样递增,因为您无法重新分配val
,并且for
将从0遍历到n遍历所有元素。因此您的j
将是0, 1 ... n -1