gpt4 book ai didi

java - for 循环创建阿基米德螺线时出现问题

转载 作者:行者123 更新时间:2023-12-01 23:54:27 26 4
gpt4 key购买 nike

我无法找出我的程序出了什么问题。当我执行它时,它似乎陷入了无限循环(或类似的情况),并且我无法弄清楚我的程序出了什么问题。这是我到目前为止所拥有的:

public class Spiral extends JComponent{

int WIDTH = 0;
int HEIGHT = 0;


public Spiral(int WIDTH, int HEIGHT) {
this.WIDTH = WIDTH;
this.HEIGHT = HEIGHT;
}


public void paintSpiral(Graphics g){
double a = 3;
double b = 0;
double t = 0;
double theta = Math.toRadians(t);
double r = theta * a + b;
double pi = Math.PI/180;
double end = 720 * pi;

int middle_x = WIDTH / 2;
int middle_y = HEIGHT / 2;

for (theta = 0; theta < end; theta += pi) {
double x = Math.cos(theta) * r + middle_x;
double y = Math.sin(theta) * r + middle_y;
int xx = (int) Math.round(x);
int yy = (int) Math.round(y);
g.drawLine(xx, yy, xx + 10, yy + 20);
}


}

public void paintComponent(Graphics g) {
paintSpiral(g);
}

public static void main(String[] args) {
int WINDOW_WIDTH = 1024;
int WINDOW_HEIGHT = 1024;

JFrame frame = new JFrame();

frame.setSize(WINDOW_WIDTH, WINDOW_HEIGHT);

// Set the title of the window
frame.setTitle("Archimedean Spiral");

// Make a new Spiral, add it to the window, and make it visible
Spiral d = new Spiral(1024, 1024);
frame.add(d);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

}

我必须使用 Graphics,这就是为什么我让 Math.round 将 x 值更改为整数,以便我可以实际绘制线条。这就是我怀疑的问题所在,但我似乎无法解决它。有什么建议吗?

最佳答案

循环变量t的类型为int,因此t += pi实际上是一个空操作,导致无限循环.

t 类型应为 double。此外,它应该是 PaintSpiral 的本地成员,而不是该类的成员。我不明白为什么您使用 t (为零)来初始化 r

此外,你的度数和弧度似乎都很困惑。

关于java - for 循环创建阿基米德螺线时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15813393/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com