数独网格控制台显示方法异常:仅输出上下边框,循环内容未显示
问题分析与解决:数独网格循环内容未输出
你遇到的问题其实很典型——错误使用了回车符\r导致循环内容被覆盖,最终只显示了上下分隔线。
问题根源
\r是回车控制字符,它的作用是把光标移到当前行的开头,而不是换行到下一行。所以你的内层循环每一行的内容都会被后续的输出(包括下一次循环的内容)不断覆盖,等到整个循环结束后,之前所有的行内容都被抹掉了,最终只剩下最开始和最后输出的两条分隔线。
修复方案
只需要把循环里的System.out.print("\r");替换成System.out.println();,后者会完成换行操作,让每一行的数独内容都能保留在控制台里:
public static void DisplaySudoku(){ System.out.println("====================================="); for(int i = 0 ; i < 9 ; i++){ System.out.print("|"); for(int j = 0 ; j < 9 ; j++){ System.out.print(" " + String.valueOf(linesArray[i][j].charAt(2)) + " |" ); } // 替换\r为换行,让每一行内容都独立显示 System.out.println(); } System.out.println("====================================="); }
额外优化建议(可选)
为了让数独的3×3区块更清晰,你可以在每3行之后添加一条分隔线,这样视觉上更符合数独的结构:
public static void DisplaySudoku(){ System.out.println("====================================="); for(int i = 0 ; i < 9 ; i++){ System.out.print("|"); for(int j = 0 ; j < 9 ; j++){ System.out.print(" " + String.valueOf(linesArray[i][j].charAt(2)) + " |" ); } System.out.println(); // 每3行添加分隔线,避免在最后一行之后重复添加 if ((i + 1) % 3 == 0 && i != 8) { System.out.println("-------------------------------------"); } } System.out.println("====================================="); }
内容的提问来源于stack exchange,提问作者jfo420
相关产品推荐
相关产品推荐

