如何打印不直接输出i、j变量的指定数字图案?现有代码输出不符预期
如何打印指定数字图案(不直接输出i、j变量)
我需要打印一种不直接输出i、j变量的数字图案,但多次调整数值都没得到预期结果。
现有代码:
int k = 1, p = 0; for (int i = 1; i <= 5; i++) { for (int j = 1; j <= i; j++) { p += k; System.out.print(p + " "); } k++; System.out.println(); }
当前输出:
1 3 5 8 11 14 18 22 26 30 35 40 45 50 55
期望输出:
1 3 5 5 8 11 7 11 15 19 9 14 19 24 29
问题分析
当前代码的核心问题是全局变量p持续累加,没有按行重置起始值,且k的增量逻辑不符合期望图案的规律。拆解期望输出的规律:
- 第i行的起始数字为
2*i - 1(i从1开始计数) - 第i行内每个数字与前一个的差值等于当前行号
i
修正后的代码
for (int i = 1; i <= 5; i++) { int current = 2 * i - 1; // 初始化每行的起始值 for (int j = 1; j <= i; j++) { System.out.print(current + " "); current += i; // 每行内按行号递增 } System.out.println(); }
逻辑说明
- 外层循环控制行数
i,范围从1到5 - 每行单独初始化
current为该行的起始值,避免全局变量的累积干扰 - 内层循环控制每行的数字个数,输出当前值后,将
current加上当前行号i,保证每行内的数字增量一致 - 每行结束后执行换行,匹配期望的输出格式
内容的提问来源于stack exchange,提问作者Manjeet Singh
相关产品推荐
相关产品推荐

