我是Java编程的新手,我给予的一个练习(我们被允许并鼓励寻求外部帮助)就是在Panel
(而不是{{1}中绘制不同内容的像素}})。
我特别遇到两个问题,在面板周边追踪一行像素并创建一个spyrograph设计(跟踪一个圆周上的一个点,该圆围绕另一个圆周上的一个点旋转。)
我已经掌握了一些基本功能,但两者都存在问题。任何人都可以看到我的错误吗?
这是我的代码和问题:
围绕周边的框 - 像素从左上角开始,从顶部到右角,向下到右下角,穿过底部到左角,然后卡在那里:
JPanel
现在,对于圈子上的圆圈 - 我看起来并不像它应该的那样 - 就像我上面提到的那样。它只是绘制一个圆圈,但我相信方程是正确的。我在这里做错了什么?
drawBox(panel);}
public static void drawBox(Display panel) {
int x = 1;
int y = 1;
while (x != 0 && y != 0){
if (x < panel.getWidth() && y == 1){
panel.drawNextPixel(x, y);
x++;
}else if (x == panel.getWidth() && y != panel.getHeight()){
panel.drawNextPixel(x, y);
y++;
}else if (x != 0 && y == panel.getHeight()){
panel.drawNextPixel(x, y);
x = x-1;
}else if (x == 0 && y == panel.getHeight()){
panel.drawNextPixel(x, y);
y = y - 1;
}
}
答案 0 :(得分:0)
所以,在第一个:
我想你可能打算放
else if (x == 0 && y != 0) {
表示最后一个if。
因为在您传递第3个if子句x == 0
和y == panel.getHeight()
后,再经过1次迭代后,x == 0
和y == panel.getHeight() - 1
。这些变量值不满足if子句和while exit子句,从而创建无限循环。上述if子句一直有效,直到y到达屏幕的上边缘。
仅供参考,这里有几个for循环会更好,因为你确切知道每行需要采取多少步骤。第一个if子句,或创建跨越顶部的行的那个子句将是:
for (int x = 0; x < panel.getWidth(); x ++) {
panel.drawNextPixel(x, 0);
此外,x = x - 1
相当于x --
。
对于第二个,我不太了解肺活量计,更不用说他们的方程了。尝试做一些研究并检查几个站点的方程式。 (This site
对你正在尝试做的事情似乎特别有帮助。)如果合适的话,还要考虑Marco13的建议并将变量更改为double
。