Java

Надо найти среднее арифметическое

код написал, но по моему что-то не тот,
Scanner sc = new Scanner(System.in);
int a[] = new int[4];
for (int i = 0; i < a.length; i++) {
a[i] = sc.nextInt();
}int d=0, sum=0;
for (int i = 0; i < a.length; i++) {
if (a[i] > 0) {

sum=sum+a[i];
d++;}
System.out.println(sum/d);
}
}

например в консоле ввожу 4 7 2 7 он выводит 4 5 4 5
System.out.println(sum/d); в цикл засунул зачем-то
Алексей Стрельников
Алексей Стрельников
69 382
Лучший ответ
Антон Чешейко ааах чувак))))) не замечал, что цикл не открыл
спс сработало
Антон Чешейко а как можно найти среднее квадратичное
Так у тебя вывод результата в цикле, а не в конце программы.
Последнее число и есть правильное. 4 5 4 5. Последнее число 5. Это и есть ответ.

Но при делении int на int дробная часть отбрасывается. Например средним арифметическим между 9 9 9 8 будет 8... Это нормально?

Вот тебе твой код, чуть подправленный:
Scanner sc = new Scanner(System.in);
int a[] = new int[4];
for (int i = 0; i < a.length; i++)
a[i] = sc.nextInt();

int d = 0, sum = 0;
for (int i : a)
if (i > 0) {
sum += i;
d++;
}
System.out.println((double) sum / (double) d);

Но вот чего я не пойму... Почему среднее арифметическое ты считаешь только между целыми и только между положительными числами? -3 5 : средним будет 1. 0 4 : средним будет 2.

Так что вот тебе ещё программка, подумай над ней:
Scanner sc = new Scanner(System.in);
float sum = 0;
byte n = 0;
try {
while (true) {
sum += sc.nextFloat();
n++;
}
} catch (Exception ignored) {
System.out.println(sum / n);
}
Будет считывать любые числа, любое количество, отрицательные, положительные, ноль, дробные вводятся через запятую. Как только введёшь букву, точку, любым способом введёшь неправильное число, не число. Программа выведет среднее арифметическое.
Д2
Димон 2701
3 550
Антон Чешейко Простите конечно, что ваш ответ не выбрал лучшим, да и спасибо вам большое, что столько постарались, но ваш ответ тут и я не говорю, что это мне не пригодиться
я начинающий программист и этот ответ мне в будущем уж точно пригодиться, не сомневайтесь))
просто тот парень был прав, когда System.out. в цикле, то выводит 4 цифра, а когда закрыл цикл, потом делал System.out., тогда вывел только 1 цифру.... Мне надо было, чтобы вывел на экран только одна цифра
Спасибо вам)))