Решаю задачу на Java:
Должно отобразиться окно со строкой ввода, где пишу рандомное число Х, после чего отображается результат: "X такой-то, Y такой-то" (если X - положительный, то Y будет 720, если отрицательный, то 0, 084). А вот если ввести X=0, то ничего не происходит. При этом Eclipse ошибок не выдает.
Подскажите, пожалуйста, где я накосячил в коде или что я пропустил?
package New;
import static java.lang.Math.*;
import javax.swing.*;
class Urav {
double a, b, c;
Urav(double a1, double b1, double c1) {
a = a1;
b = b1;
c = c1;
}
public double ur1() {
return sin(pow(a, 2) + pow(cos(b), 2) * b) / 2 * c * sqrt(sin(a * b));
}
public double ur2(int i, double x) {
return 2 * i - x * (pow(i, 2));
}
public double ur3(int n) {
return pow(n, 3) / pow(n, 2) + 1;
}
}
public class fqrs1 {
public static void main(String[] args) {
String x2 = JOptionPane.showInputDialog("Введіть значення Х");
if (x2.isEmpty()) {
JOptionPane.showMessageDialog(null, "Х не задано");
return;
}
double x = Double.parseDouble(x2);
Urav y = new Urav(0.245, 0.0498, 14);
double y1;
if (x < 0) {
y1 = y.ur1();
} else if (x > 0) {
int n = 1;
y1 = 1;
while (n <= 5) {
y1 *= y.ur3(n);
n++;
}
}
else {
y1 = 0;
for (int i = 3; i <= 6; i += 0.5) {
y1 += y.ur2(i, x);
}
}
JOptionPane.showMessageDialog(null, "x = " + x + "\n" + "y= " + y1);
}
}
Вот здесь у вас ошибка:
else {
y1 = 0;
for (int i = 3; i <= 6; i += 0.5) {
y1 += y.ur2(i, x);
}
}
i имеет тип int, а вы изменяете его, прибавляя 0.5 - не целочисленное значение. При прибавлении к целому типу 0.5 оказывается нулём UPD (из комментария @etki). складывается с i с приведением к double, а затем значение приводится к int, и в итоге у вас в цикле i не изменяется вообще.
for (int i = 3; i <= 6; i += 0.5)
Интересный факт, такой код по логике не должен компилироваться:
for (int i = 3; i <= 6; i += 0.5) - скомпилируется
for (int i = 3; i <= 6; i = i + 0.5) - не скомпилируется
Это происходит из-за особенности приведения типов в операторе +=, подробнее можно прочесть в этом вопросе и ответах на него
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости