Java循环填充表格求助:修正遍历逻辑实现指定填充顺序
修正你的表格填充循环逻辑
嘿,作为Java新手遇到这种循环顺序问题太正常了,我帮你捋捋问题出在哪,再给你几个贴合需求的修正方案~
原循环的核心问题
你原来的代码里:
int max_row = 1; //maximum row length is 1 int max_col = 2; //maximum column length is 2 for (int x = 0; x<=max_row; x++) { for (int y = 1; y<max_col; y++) { this.add_at(x,y); } }
有两个关键bug:
- 内层循环
y < max_col,当max_col=2时,y只能取1,直接漏掉了**(0,2)**这个需要填充的位置; - 第二行(x=1)的y从1开始,跳过了必须填充的**(1,0)**位置。
符合预期顺序的修正方案
根据你想要的填充顺序:(0,1) → (0,2) → (1,0) → (1,1) → (1,2),这里给你两种实现思路:
方案1:分两行处理(最直观,适合新手)
这种写法完全贴合你的顺序要求,逻辑一目了然:
int max_row = 1; int max_col = 2; // 先处理第0行:y从1到2 for (int y = 1; y <= max_col; y++) { this.add_at(0, y); } // 再处理第1行:y从0到2 for (int y = 0; y <= max_col; y++) { this.add_at(1, y); }
方案2:嵌套循环优化(更紧凑)
如果想保持嵌套循环的结构,可以通过判断当前行来调整y的起始值:
int max_row = 1; int max_col = 2; for (int x = 0; x <= max_row; x++) { // 第0行从y=1开始,第1行从y=0开始 int startY = (x == 0) ? 1 : 0; // 所有行都要覆盖到y=2(即<=max_col) for (int y = startY; y <= max_col; y++) { this.add_at(x, y); } }
效果验证
两种方案最终都会严格按照你想要的顺序调用add_at:
add_at(0,1)add_at(0,2)add_at(1,0)add_at(1,1)add_at(1,2)
完美覆盖除(0,0)(标记为E)之外的所有位置。
内容的提问来源于stack exchange,提问作者troopers97
相关产品推荐
相关产品推荐

