是否可以在scala中使用用户输入填充数组?

时间:2016-02-21 09:18:32

标签: arrays scala

我正在尝试关注但是得到错误“类型为Array [Int]的变量arr不接受类型参数。”

object try_arr
{
  def main(args: Array[String])
  {
    var arr = new Array[Int](3)
        for(i<- 1 to 3)
        {
          val num = scala.io.StdIn.readInt()
          arr[i] = num
        }
      }
    }

5 个答案:

答案 0 :(得分:3)

正如Simon已经指出的那样,你试图将java语法应用于scala代码 - 在scala []中用于指定类型,并且为了访问你应该使用的数组元素() ,例如xs(3)

我想解决这个问题的最简单方法是使用Array.fill方法:

object FillTheArray {
  def main(args: Array[String]) {
    val userInput = Array.fill(3) {
      scala.io.StdIn.readInt()
    }
  }
}

答案 1 :(得分:1)

在scala中,您可以像这样

索引数组
arr(i) = num

答案 2 :(得分:1)

更多的旁注,请考虑使用不可变对象的更多Scalish方法,

val xs = for (i <- 1 to 3; num = scala.io.StdIn.readInt()) yield num 

其中范围(1 to 3)中的每个值都映射到用户输入上。结果向量(xs)可以转换为数组,

xs.toArray

同样地

(1 to 3).map(_ => scala.io.StdIn.readInt()).toArray

证明了代码。

这与创建可变数组和使用用户输入更新每个位置(由范围中的每个值引用)的更为迫切的方法形成对比。

答案 3 :(得分:0)

使用以下声明

a(i)= scala.io.StdIn.readInt()

答案 4 :(得分:0)

for循环中的

不能为1到3,因为数组索引从0开始并且在0到2之间。否则显示错误ArrayOutOfBound异常。

代码: var arr = new ArrayInt

    for(i<- 0 to 2)
    {
        print("Enter number")
        val num = scala.io.StdIn.readInt()
        arr(i) = num
    }
    arr.foreach((element:Int)=> print(element + " "))