【问题标题】:Find first null value of an Array[Int]查找 Array[Int] 的第一个空值
【发布时间】:2015-10-31 01:44:22
【问题描述】:

我正在使用 scala 但如何测试一个值是否为 null ?尤其是在 Array[Int]

在java中是:

if( tab[i] == null )

在 scala 上,同样的测试,ide 说:

comparing values of types Int and Null using `==' will always yield false

谢谢你

【问题讨论】:

  • Int 不能为空。 Java int 也不能为空。
  • 例如,在一个大小为 15 的 Array 中,只有 11 个第一个元素被初始化为 value。我如何测试第 12 个值。我想找到 Array[Int] 的第一个空值
  • 如果不初始化Int,会被初始化为0
  • Array[Int] 是原始 int,但通常 C[A] 其中 A 是 Int 会导致对 Integer 的装箱。原始 int 的默认值为 0。
  • 谢谢你,抱歉这个愚蠢的问题

标签: scala testing null


【解决方案1】:

来自scala.Null 的文档:

Null 不是值类型的子类型

如果您打开一个 Scala 会话并创建一个包含 5 个元素的 Array[Int],您可以看到它们都被初始化为默认值 0

val a: Array[Int] = new Array[Int](5)             
//> a  : Array[Int] = Array(0, 0, 0, 0, 0)

所以要找到你的第一个未初始化的元素,假设0不是你的数组的有效值,那么你只需要做a indexOf 0,要测试单个元素,只需测试谓词a(i) == 0,例如:

val a: Array[Int] = new Array[Int](5)             
  //> a  : Array[Int] = Array(0, 0, 0, 0, 0)
//  set some dummy elements for the first few entries
for (i <- 0 to 3) a(i) = (i+ 1)
// find the entry
a indexOf 0                                       
  //> res0: Int = 4
a map (_ == 0)                                    
  //> res1: Array[Boolean] = Array(false, false, false, false, true)

【讨论】:

    猜你喜欢
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 2013-05-26
    • 2021-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多