object class3 {
def main(args: Array[String]): Unit = {
// Array(1,2,3)
// val arr = Array.range(1,100)
// arr.foreach(println) // 1-99
// val arr1 = Array.range(1,100, 3) // 3 步长
// arr1.foreach(println)// 1-99
val arr1 = Array(1,2,3)
// 访问数组元素
println(arr1(0)) // 第一个元素
println(arr1(2)) // 第三个元素
println(arr1(20)) // 报错:数组越界!第21个元素:java.lang.ArrayIndexOutOfBoundsException:
}
}
1. 确认数组有效下标范围
先明确数组的长度(数组名.length),有效下标是 0 ~ 数组长度-1。比如你的代码中arr1 = Array(1,2,3),长度是 3,有效下标是0、1、2,所以不能访问20。
2. 访问前检查下标合法性
在使用下标前,先判断它是否在有效范围内:
scala
val arr1 = Array(1,2,3)
val index = 20
// 检查下标是否在 0 ~ arr1.length-1 之间
if (index >= 0 && index < arr1.length) {
println(arr1(index))
} else {
println(s"下标${index}越界!数组长度为${arr1.length},有效下标是0~${arr1.length-1}")
}
3. 用安全的访问方法(Scala 特有的lift)
Scala 的数组可以通过lift方法将下标访问转为Option类型(存在则返回Some(值),不存在则返回None),避免直接抛出异常:
scala
val arr1 = Array(1,2,3)
// 安全访问下标20,返回None
val result = arr1.lift(20)
// 处理结果
result match {
case Some(value) => println(value)
case None => println("下标越界,无法访问")
}
4. 循环遍历数组时用合法下标
如果是循环中访问,用数组的indices(返回有效下标范围)或直接遍历元素,避免手动写下标:
scala
val arr1 = Array(1,2,3)
// 遍历有效下标
for (i