1. 简介
乘法表是一种基础的数学工具,以表格形式展示两个数字相乘的结果。它不仅是教学中常用的辅助工具,也在各种实际计算任务中非常有用。
在本教程中,我们将探讨如何使用 Kotlin 生成乘法表,并展示三种不同的实现方式:使用 for
循环、while
循环,以及函数式编程方式。每种方法都适用于不同的场景,帮助你根据具体需求选择最合适的实现。
2. 使用 for
循环
当已知迭代范围时,for
循环是一个非常合适的选择。
下面是一个使用 for
循环生成乘法表的函数:
private fun generateMultiplicationTableUsingForLoop(num: Int): String {
val table = StringBuilder()
for (i in 1..10) {
val product = num * i
table.append("$num * $i = $product\n")
}
return table.toString().trim()
}
我们还应该编写单元测试来验证其输出是否正确:
@Test
fun `generate multiplication table using for loop`() {
val num = 6
val expectedTable = """
6 * 1 = 6
6 * 2 = 12
6 * 3 = 18
6 * 4 = 24
6 * 5 = 30
6 * 6 = 36
6 * 7 = 42
6 * 8 = 48
6 * 9 = 54
6 * 10 = 60
""".trimIndent()
val actualTable = generateMultiplicationTableUsingForLoop(num)
assertEquals(expectedTable, actualTable)
}
该测试使用 JUnit 的 assertEquals()
方法验证函数输出是否与预期一致。
3. 使用 while
循环
当我们需要对循环进行更精细的控制时(例如在循环体中进行条件判断或动态修改变量),while
循环是更合适的选择。
下面是使用 while
循环实现的乘法表函数:
private fun generateMultiplicationTableUsingWhileLoop(num: Int): String {
val table = StringBuilder()
var i = 1
while (i <= 10) {
val product = num * i
table.append("$num * $i = $product\n")
i++
}
return table.toString().trim()
}
对应的单元测试如下:
@Test
fun `generate multiplication table using while loop`() {
val num = 10
val expectedTable = """
10 * 1 = 10
10 * 2 = 20
10 * 3 = 30
10 * 4 = 40
10 * 5 = 50
10 * 6 = 60
10 * 7 = 70
10 * 8 = 80
10 * 9 = 90
10 * 10 = 100
""".trimIndent()
val actualTable = generateMultiplicationTableUsingWhileLoop(num)
assertEquals(expectedTable, actualTable)
}
测试逻辑与之前类似,确保输出与预期一致。
4. 使用函数式编程方式
如果你偏好简洁、声明式的代码风格,Kotlin 的函数式编程特性是理想选择。这种方式通常更简洁、易读,也更符合现代编程风格。
下面是使用函数式方式生成乘法表的实现:
private fun generateMultiplicationTableFunctionally(num: Int): String {
return (1..10).map { i ->
val product = num * i
"$num * $i = $product"
}.joinToString("\n")
}
对应的单元测试如下:
@Test
fun `generate multiplication table functionally`() {
val num = 7
val expectedTable = """
7 * 1 = 7
7 * 2 = 14
7 * 3 = 21
7 * 4 = 28
7 * 5 = 35
7 * 6 = 42
7 * 7 = 49
7 * 8 = 56
7 * 9 = 63
7 * 10 = 70
""".trimIndent()
val actualTable = generateMultiplicationTableFunctionally(num)
assertEquals(expectedTable, actualTable)
}
这段代码使用了 Kotlin 的 map
和 joinToString
方法,将整个逻辑变得更紧凑。
5. 总结
本教程中我们介绍了三种生成乘法表的方法:
✅ 使用 for
循环:适合已知迭代范围的情况
✅ 使用 while
循环:适合需要更灵活控制循环逻辑的场景
✅ 使用函数式方式:代码更简洁,适合现代 Kotlin 编程风格
无论选择哪种方式,都建议配合单元测试来确保逻辑正确。这不仅有助于避免 bug,也方便未来进行维护和扩展。你可以根据项目风格或个人喜好灵活选用。