Java二维数组实现阶梯乘法表及现有代码优化问询
乘法表优化与阶梯乘法表实现
一、优化完整乘法表(移除多余循环)
你用3个循环实现完整乘法表确实冗余,仅需两层循环就能搞定:外层循环控制行号(1-9),内层循环控制每行的列号(1-9),直接计算行号*列号填充二维数组即可,时间复杂度从O(n³)降到O(n²),效率提升明显。
Python 优化代码
# 生成9*9完整乘法表 full_table = [] for i in range(1, 10): current_row = [] for j in range(1, 10): current_row.append(i * j) full_table.append(current_row) # 打印验证 for row in full_table: print(row)
Java 优化代码
public class FullMultiplicationTable { public static void main(String[] args) { int[][] fullTable = new int[9][9]; // 两层循环填充数组 for (int i = 0; i < 9; i++) { int rowNum = i + 1; // 行号从1开始 for (int j = 0; j < 9; j++) { int colNum = j + 1; // 列号从1开始 fullTable[i][j] = rowNum * colNum; } } // 格式化打印 for (int[] row : fullTable) { for (int num : row) { System.out.printf("%2d ", num); } System.out.println(); } } }
二、实现阶梯状乘法表
阶梯表的核心逻辑是第i行仅生成i个元素,只需调整内层循环的终止条件:让列号从1遍历到当前行号即可。
Python 实现代码
# 生成阶梯状乘法表 step_table = [] for i in range(1, 10): current_row = [] # 内层循环上限改为当前行号i,生成i个元素 for j in range(1, i + 1): current_row.append(i * j) step_table.append(current_row) # 打印验证 for row in step_table: print(row)
Java 实现代码
import java.util.ArrayList; public class StepMultiplicationTable { public static void main(String[] args) { // 阶梯表每行长度不同,用ArrayList<int[]>存储更灵活 ArrayList<int[]> stepTable = new ArrayList<>(); for (int i = 1; i <= 9; i++) { int[] currentRow = new int[i]; for (int j = 1; j <= i; j++) { currentRow[j - 1] = i * j; } stepTable.add(currentRow); } // 格式化打印 for (int[] row : stepTable) { for (int num : row) { System.out.printf("%2d ", num); } System.out.println(); } } }
常见问题排查
如果之前调整循环失败,大概率是这两个原因:
- 循环起始/终止条件错位(比如行号从0开始但未做+1转换,导致逻辑混乱)
- 数组初始化不符合阶梯需求(Java中用固定长度二维数组会出现多余空元素,改用动态集合更合适)
内容的提问来源于stack exchange,提问作者anthares
相关产品推荐
相关产品推荐

