Вывод расчетов в TableView - Java
Формулировка задачи:
Доброго времени суток!
Пишу программу для расчета необходимого диаметра трубы. Вроде бы все верно, но в TableView выводит не то, что надо
Понял это, когда запустил тот же код в Delphi и PascalABC
Мой код Java:
Выводит то, что вы видите на первом скриншоте
Примерно тот же код, выполненный в PascalABC:
Выведет то, что на втором скриншоте
Проблема в том, что в паскале расчитывает все правильно и в TableView в столбец диаметра трубы, по идее, он должен записывать те же значения, что пишет в паскалевскую консоль
Никак не могу найти ошибку, помогите, пожалуйста!
public void setValues(){
resTable.getItems().removeAll(usersData);
resTable.refresh();
i = 0;
final double pi = 3.14;
final double eps = 0.00001;
hMin = Integer.valueOf(hMin_TF.getText());
hMax = Integer.valueOf(hMax_TF.getText());
dH = Integer.valueOf(dH_TF.getText());
qMin = valueOf(qMin_TF.getText());
qMax = valueOf(qMax_TF.getText());
dQ = valueOf(dQ_TF.getText());
L = Integer.valueOf(L_TF.getText());
Z = valueOf(Z_TF.getText());
W = valueOf(W_TF.getText());
do{
do{
A = (Math.pow(pi, 2) * dH)/(8 * Math.pow(dQ, 2));
B = (0.02 * L)/A;
C = B/40;
E = (Z + W)/A;
dn_1 = 0.2;
do{
dn_2 = dn_1;
dn = dn_1 - (F(A, B, C, E, dn_1)) / (fs(A, B, C, dn_1));
dn_1 = dn;
}while(!(Math.abs(dn - dn_2) <= eps));
i++;
System.out.println(i + ": " + dn);
usersData.add(new resView(1, new BigDecimal(dn).setScale(7, RoundingMode.HALF_UP).doubleValue(),
hMin, new BigDecimal(qMin).setScale(2, RoundingMode.HALF_UP).doubleValue(), L, "3 и 5"));
resTable.setItems(usersData);
qMin = qMin + dQ;
} while(qMin <= qMax);
qMin = valueOf(dQ_TF.getText());
hMin = hMin + dH;
} while(hMin <= hMax);
}Program firstTest;
var
Hmin, Hmax, hH, Qmin, Qmax, hQ, l, z, w: real;
function Stepen(x, y: real): real;
begin
Result := exp(y * ln(x));
end;
function f(a, b, c, e, x: real): real;
begin
Result := (A * stepen(x, 6)) - (C * sqr(x)) - (B * x) - E;
end;
function fs(a, b, c, x: real): real;
begin
Result := (6 * A * stepen(x, 5)) - (2 * C * x) - B;
end;
procedure Raschet;
const
pi = 3.14{285714285714};
eps = 1e-5;
var
A, B, C, E, dn, dn_1, dn_2: real;
i: integer;
begin
i := 0;
Hmin := 10;
Hmax := 50;
hH := 10;
Qmin := 0.01;
Qmax := 0.05;
hQ := 0.01;
L := 100;
Z := 3;
W := 5;
repeat
repeat
A := (sqr(pi) * Hmin) / (8 * sqr(Qmin));
B := (0.02 * L) / A;
C := B / 40;
E := (Z + W) / A;
dn_1 := 0.2;
repeat
dn_2 := dn_1;
dn := dn_1 - (F(a, b, c, e, dn_1)) / (fs(a, b, c, dn_1));
dn_1 := dn;
until abs(Dn - Dn_2) <= eps;
inc(i);
writeln(i + ': ' + dn);
Qmin := Qmin + hQ;
until Qmin > Qmax;
Qmin := Qmin - Qmin + hQ;
Hmin := Hmin + hH;
until Hmin > Hmax;
end;
begin
Raschet;
end.Решение задачи: «Вывод расчетов в TableView»
textual
Листинг программы
static void log(double d){
System.out.println("log " + String.valueOf(d));
}