Решаю задачу на 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) - не скомпилируется
Это происходит из-за особенности приведения типов в операторе +=
, подробнее можно прочесть в этом вопросе и ответах на него
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Добрый деньСкажите пожалуйста как можно организовать список который при нажатии по элементу списка формировал такой же список только с другими...
Есть небольшая проблемка с программой IntelliJ IDEA - не могу выполнить java-кодСделал как надо - во вкладке Bulid рядом сделал билд проекта, а кнопка...
есть форма (javafx без fxml, GridPane с -мя колонками: лэйбл и поля для ввода)Необходимо реализовать добавление полей (например добавить несколько дат)