【发布时间】:2014-10-03 22:52:04
【问题描述】:
这个问题不是需要解决的问题,而是我的代码的一个方面,我希望在理解方面有所帮助。
我首先在屏幕中间画一条线,以便更容易解释我不理解的内容。
用户可以输入每行之间有多少像素。
循环说明:它从左侧 Y 轴的中间到右下角画一条线,然后重复该操作,通过 userInput 增加 startY 整数并减少相同数量的 endY 整数,直到已到达框架底部。
g.setColor(Color.RED);
g.drawLine(startX, getHeight() / 2, endX, getHeight() / 2);
g.setColor(Color.BLACK);
for (int startY = getHeight() / 2; startY <= bottom; startY += userInput) {
g.drawLine(startX, startY, endX, endY);
endY -= userInput;
}
}
这是效果:http://i.imgur.com/TUpvI10.png
现在当我切换这些代码行时:
g.drawLine(startX, startY, endX, endY);
endY -= userInput;
到
endY -= userInput;
g.drawLine(startX, startY, endX, endY);
这是效果:http://i.imgur.com/zm1ubfn.png
如您所见,它在右侧画了一条额外的线,这意味着循环执行了额外的时间,对吗?我不明白为什么。两个版本的循环不应该同时停止(到达帧底部时)吗?
那么为什么当我切换这些语句时循环会执行额外的时间?
我很困惑,我很难理解这个逻辑。
【问题讨论】:
-
顶部有一个“额外”行,但底部还有一个“缺失”行。 (实际上,没有缺失或多余的行,但所有行都略微上移了)