今日练习

65 阅读2分钟

(一)map函数

任务:把数组(1,2,3,4,5) → (2,4,6,8,10)

[讲] 作用:通过对数组的每一个元素应用一个函数来构建一个新数组。

[讲] 语法: 新数组 = 旧数组.map(旧元素=>新元素) 代码:

val arr1 = Array(1,2,3,4,5,6)  
val arr2 = arr1.map(x=>x*2)  
for(i <- arr2){  
  println(i)  
}

[练] :把(1,2,3,4,5) → (1,4,9,16,25)

代码:

// 原数组
val nums1 = Array(1, 2, 3, 4, 5)

// 使用 map 对每个元素求平方
val squared = nums1.map(elem => elem * elem)  // 等价于 nums1.map(_ * _)

// 打印结果
println(squared.mkString(", "))  // 输出:1, 4, 9, 16, 25

[练] :把(-1,2,-3,-4) → (1,2,3,4)

代码:

// 原数组
val nums2 = Array(-1, 2, -3, -4)

// 使用 map 对每个元素取绝对值
val absolute = nums2.map(elem => math.abs(elem))  // 等价于 nums2.map(math.abs)

// 打印结果
println(absolute.mkString(", "))  // 输出:1, 2, 3, 4

(二)foreach函数

任务: 打印数组中的元素

[讲] 作用:对数组的每一个元素应用函数。

[讲] 语法:数组.foreach(元素=>{})

[码]

// 定义一个数组
val nums = Array(1, 2, 3, 4, 5)

// 使用 foreach 打印每个元素
nums.foreach(elem => {
  println(elem)  // 对每个元素执行打印操作
})

(三)filter函数

任务:在数组中找出元素是偶数的,并组成新数组。(1,2,3,4,5) → (2,4)

[讲] 作用:对数组元素使用函数进行过滤。

[讲] 语法:新数组= 旧数组.filter(元素=>bool)  它的参数是一个函数,这函数的返回值是布尔值。如果返回为true就保留。 [码]

val arr1 = Array(1,2,3,4,5,6)  
val arr3 = arr1.filter(x=> x%2  == 0)  
arr3.foreach(println)

[练] :去掉不及格的分数:(60,59,80,70) → (60,80,70)

代码:

// 原分数数组
val scores = Array(60, 59, 80, 70)

// 使用 filter 筛选及格分数(≥ 60)
val passedScores = scores.filter(score => score >= 60)

// 打印结果
println(passedScores.mkString(", "))  // 输出:60, 80, 70

任务:对成绩(100,51,55,67,59,89)进行处理,如果分数在56-59之间,就设置为60分,得到的新成绩为(100,51,55,67,60,89)

代码:

// 原成绩数组
val scores = Array(100, 51, 55, 67, 59, 89)

// 使用 map 处理成绩:56-59分调整为60分,其余不变
val adjustedScores = scores.map { score =>
  if (score >= 56 && score <= 59) 60  // 符合条件的分数替换为60
  else score  // 其他分数保持不变
}

// 打印结果
println(adjustedScores.mkString(", "))  // 输出:100, 51, 55, 67, 60, 89