Java

Задали д/з не могу решить(

Создать массив дробных (не целых) чисел размером 15 элементов и наполнить его положительными и отрицательными числами;

Затем через цикл “for each” посчитать среднее арифметическое положительных чисел расположенных после первого отрицательного числа и вывести его на экран
А что именно тут не понятно?
Продумай алгоритм по шагам.
1. Создаешь массив с числами
2. Пишешь цикл for each
3. В цикле проверяешь, число больше 0 или меньше.
- если число меньше 0, то нам нужно запомнить это. Для этого создадим переменную типа boolean ВНЕ цикла. По умолчанию она false. Если число меньше, чем 0, то превращаем ее в true.
- Делаем следующую проверку в цикле ПОСЛЕ предыдущей: если переменная из предыдущего шага = true, то нам надо начать сохранять положительные элементы. Создадим под это дело еще одну переменную типа List< Double >. Внутри этой проверки делаем проверку число больше 0 или нет. Если число больше, то добавляем его в лист положительных элементов.
4. Теперь у нас есть все положительные элементы, после того, как цикл закончится. Нужно их просуммировать ПОСЛЕ ЦИКЛА и поделить на количество элементов.

Вроде ничего сложного. Мой алгоритм может быть не эффективным, не совсем правильным, и вообще я спать хочу. Дорогу осилит идущий. Тут вам накидают красивых решений с кодом, но нужно учиться думать самому. Это сложно, но вы же хотите научиться программировать. А вообще лучше подобные вопросы задавать таким образом - вот моя задача, вот мой код, помогите найти ошибку. Иначе вы ничему не научитесь.
Владимир Козлов
Владимир Козлов
40 393
Лучший ответ
Дмитрий Морозов спасибо, если что, я могу обратиться сюда за повторной помощью, если мне будет что то не понятно (в коменты под темой)
Александр Александр Кусайко Как вариант - пользоваться гуглом. Если вы наберете в поиске "посчитать среднее арифметическое положительных чисел расположенных после первого отрицательного числа", то найдете кучу разных реализаций.
я вам предложу решение, потому что судя по вашим ошибкам в синтаксисе вы даже с подсказками будете составлять код долго. У вас В инициализации массива ошибка . В задании требуется, чтобы в нем были положительные и отрицательные числа, у вас только положительные.

Ваш нужно изучать основы языка, рекомендую Шилдта Java 8 полное руководство

Это один из вариантов решения, второй вам предложили выше
 public class test {


public static void main(String[] args) {

double[] fractionalNums =

{1.5, 2.4, 5.3, -2.5, 4.1, 6.1, 7.4, -1.8, 8.1, 7.4, -5.9, 7.5, 6.2, 4.6, 9.9};


double average = 0.0;

int count = 0;



//внешний цикл, в нем перебираем числа, пока не дойдем до

//первого отрицательного числа

for (int a1 = 0; a1 < fractionalNums.length; a1++) {


//если во внешнем цикле достигли первого отрицательного числа,

//переходим во внутренний цикл,

//перебираем во внутреннем цикле оставшиеся числа массива

//и складываем только положительные числа

if (fractionalNums[a1] < 0) {

for (int a2 = a1 + 1; a2 < fractionalNums.length; a2++) {



if (fractionalNums[a2] > 0) {

average = average + fractionalNums[a2];

//тоже самое:

//average += fractionalNums[a2];

count++;

}

}

//после завершения внутреннего цикла

// дальше внешний цикл не нужен, выход

break;

}

}

//сумма положительных чисел массива

System.out.println("average " + average);

//количество положительных чисел массива

System.out.println("count " + count);

//подсчет среднего значения положительных чисел массива

System.out.println("average/count " + average / count);

}

}
Дмитрий Морозов спасибо большое. постараюсь изучать как можно больше!
Ансаган Сайлаубек на основе предложенного решения попробуйте решить эту же задачу с boolean вместо внутреннего цикла, как вам советовали выше по приведенному алгоритму. Можете тут решение выложить по первому варианту.

В каком редакторе вы пишете код? В коде синтаксические ошибки, если будете работать в Intelij Idea то IDE сразу будет их показывать.
Братан забей
Правда
Дмитрий Морозов угу, а на игру мне так же забить, так как я буду в коворкинге работать. На будущую работу так же забить?!