如何按指定顺序打印二维数组并将奇数替换为星号
问题解决说明
根因分析
- 你当前的
printArrayEven方法在每个元素输出后都调用了System.out.println()触发换行,自然所有内容会垂直排列。 - 符合预期的
printArray方法是遍历完一整行的所有元素后,才执行一次换行操作,两个方法的换行逻辑不一致才导致输出格式不同。
修改方案
调整printArrayEven的换行逻辑,和printArray保持一致:
- 内层循环遍历单个行内元素时,仅输出内容不换行,奇数替换为
*和原有数字输出格式对齐 - 内层循环走完一整行所有元素后,再执行一次换行
修改后的printArrayEven代码如下:
private static void printArrayEven(int[][] theArray) { for (int i = 0; i < theArray.length; i++) { // 内层循环遍历当前行的所有元素 for (int j = 0; j < theArray[i].length; j++) { if ((theArray[i][j]) % 2 == 0) { // 偶数直接输出,不换行 display(theArray[i][j]); } else { // 奇数替换为星号输出,和display的输出格式统一加空格,不换行 System.out.print("* "); } } // 整行遍历完成后再换行 System.out.println(); } }
输出效果验证
修改后输出格式和printArray完全一致,示例输出如下:
1 2 3 4 5 6 7 8 9 ______________________________ * 2 * 4 * 6 * 8 *
内容的提问来源于stack exchange,提问作者OEThe11
相关产品推荐
相关产品推荐

