如何用Kotlin实现空心直角三角形与数字直角三角形?
修正方案:实现两种直角三角形输出
1. 空心直角三角形实现
原代码的核心问题是循环逻辑混乱:在for循环内每次打印*后立即换行,同时在for循环中自增外层循环变量i,导致输出完全偏离预期。以下是修正后的代码:
import kotlin.io.* fun main() { print("Enter an integer: ") val n = readLine()!!.toInt() // 遍历每一行 for (i in 1..n) { // 遍历每行的每个位置 for (j in 1..i) { // 第一行、最后一行,或是每行的首尾位置打印*,其余打印空格 if (i == 1 || i == n || j == 1 || j == i) { print("*") } else { print(" ") } } // 每行结束换行 println() } }
逻辑说明:
- 外层循环控制总行数,从1到输入的整数
n - 内层循环控制每行的字符输出:仅在第一行、最后一行,或者当前位置是该行的第一个/最后一个字符时打印
*,其余位置打印空格,实现空心效果 - 每行所有字符打印完成后执行换行
2. 数字直角三角形实现
直接通过双层循环实现,外层控制行数,内层按顺序打印对应数字:
import kotlin.io.* fun main() { print("Enter an integer: ") val n = readLine()!!.toInt() for (i in 1..n) { for (j in 1..i) { print(j) } println() } }
逻辑说明:
- 外层循环
i从1到n,代表当前行数 - 内层循环
j从1到i,依次打印数字j,完成当前行的数字序列 - 每行数字打印完成后换行
内容的提问来源于stack exchange,提问作者Lynn
相关产品推荐
相关产品推荐

