Имеется данная программа, которая считает координаты по заданным расчётам, затем необходимо вывести в окне окружности по полученным координатам x и y. Как сделать так, чтобы выводилось одно окно после цикла, используя этот же метод? Либо как в публичном классе Board использовать значения координат из цикла? На данный момент выводится множество окон, в каждом из которых рисуется одна окружность по ходу цикла.
package com.Project;
import javax.swing.*;
import java.awt.*;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
System.out.println("Прорамма для расчёта координат точек дуги");
Scanner num = new Scanner(System.in);
while (true) {
String decision;
label:
{
System.out.print("Введите количество точек n=");
float n = num.nextInt();
System.out.print("Введите значение половины хорды дуги l=");
double l = num.nextDouble();
System.out.print("Введите значение высоты сегмента круга h=");
double h = num.nextDouble();
if (h <= l) {
double R = (l * l + h * h) / (2 * h);
System.out.println("R=" + String.format("%8.2f", R));
double k = Math.sqrt(l * l + h * h);
double a = (240 * h * (4 * k - l)) / (Math.PI * (l * l + h * h));
System.out.println("a=" + String.format("%8.2f", a));
double a1 = 90 - (a / 2);
double asekt = (a / 2) / ((n - 1) / 2);
double x0 = h - R;
double y0 = 0;
double x = x0 + (R * (Math.sin((a1 * Math.PI) / 180)));
double y = y0 + (R * (Math.cos((a1 * Math.PI) / 180)));
double asled;
int N;
for (N = 0; N < n; N++) {
asled = a1 + asekt * N;
x = x0 + (R * (Math.sin((asled * Math.PI) / 180)));
y = y0 + (R * (Math.cos((asled * Math.PI) / 180)));
System.out.println("Для точки " + (N + 1) + " α=" + String.format("%8.2f", asled) + " x=" + String.format("%8.2f", x) + " y=" + String.format("%8.2f", y));
double x1 = x*100;
double y1 = y*100;
class Board extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
paint(g);
}
public void paint(Graphics g) {
g.translate(getWidth() / 2, getHeight() / 2);
int d = (int) x1 ;
int f = (int) y1;
g.drawOval(d, f, 8, 8);
}
}
JFrame jf = new JFrame("Window");
jf.setSize(800, 600);
jf.setVisible(true);
jf.add(new Board());
}
System.out.print("Провести расчёт ещё раз y/n? ");
while (true) {
decision = num.nextLine();
switch (decision) {
case "y":
break label;
case "n":
System.exit(0);
}
}
} else ;
System.out.println("Введены некорректные данные. Введите значения заново:");
break label;
}
}
}
}