Загрузка данных


import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        sc.useLocale(Locale.US);

        // Ввод: n x h a
        int n = sc.nextInt();
        double x = sc.nextDouble();
        double h = sc.nextDouble();
        double a = sc.nextDouble();

        if (n <= 0) {
            System.out.println("n должно быть больше нуля");
            return;
        }

        List<Double> r = new ArrayList<>();

        // 1. Формирование массива.
        for (int i = 1; i <= n; i++) {
            r.add(2.5 * Math.sin(a * x + (double) i * i * h));
        }

        printArray(r);

        // Поиск первого минимального и последнего положительного.
        int minIndex = 0;
        int lastPositive = -1;

        for (int i = 0; i < r.size(); i++) {
            if (r.get(i) < r.get(minIndex)) {
                minIndex = i;
            }

            if (r.get(i) > 0) {
                lastPositive = i;
            }
        }

        // 2. Удаление отрицательных элементов между границами.
        if (lastPositive == -1) {
            System.out.println("Нет положительного элемента");
        } else {
            int left = Math.min(minIndex, lastPositive);
            int right = Math.max(minIndex, lastPositive);

            for (int i = right - 1; i > left; i--) {
                if (r.get(i) < 0) {
                    r.remove(i);
                }
            }

            printArray(r);
        }

        // 3. Среднее элементов до первого отрицательного.
        double sum = 0;
        int count = 0;

        while (count < r.size() && r.get(count) >= 0) {
            sum += r.get(count);
            count++;
        }

        if (count == 0 || count == r.size()) {
            // Либо отрицательный элемент первый,
            // либо отрицательных элементов вообще нет.
            System.out.println("Нет среднего значения");
        } else {
            System.out.printf(Locale.US, "Sr=%.3f%n", sum / count);
        }

        sc.close();
    }

    private static void printArray(List<Double> r) {
        System.out.print("R={");

        for (int i = 0; i < r.size(); i++) {
            if (i > 0) {
                System.out.print("; ");
            }
            System.out.printf(Locale.US, "%.3f", r.get(i));
        }

        System.out.println("}");
    }
}