Нужно, чтобы ответ программа считала с точной 2 знака после запятой
У меня есть задание: Дана последовательность целых чисел из N элементов. Найдите среднее арифметическое элементов последовательности, имеющих нечетное значение. Выведите среднее арифметическое элементов последовательности, имеющих нечетное значение. Ответ выведите с точностью 2 знака после запятой. Если в последовательности нет нечётных элементов, выведите "NO". Я написал код, но ответ получается без остатка после деления, только целая часть. Как сделать так, чтобы программа считала ответ вместе с остатком?
import java.util.Scanner;
public class Main {
public static void main(String args[]){
Scanner s = new Scanner(System.in);
int N = s.nextInt();
int array[] = new int[N];
for (N = 0; N <array.length; N++){
array[N] = s.nextInt();
}
int sum = 0;
int i = 0;
float result;
for (N = 0; N <array.length; N++){
if (array[N]%2!=0){
sum += array[N];
i++;
}
}
result = (sum/i);
if(i > 0)
System.out.print(result);
else
System.out.print("NO");
}
}
Ответы (1 шт):
Автор решения: Алексей Р
→ Ссылка
- Нужно объявить
float sum = 0;вместоint sum = 0;(при целочисленных sum и i производится целочисленное же деление) result = sum / i;нужно перенести внутрьif (i > 0)во избежание деления на 0- Вывести отформатированное число можно с помощью
System.out.printf("%.2f", result);
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int N = s.nextInt();
int[] array = new int[N];
for (N = 0; N < array.length; N++) {
array[N] = s.nextInt();
}
float sum = 0;
int i = 0;
float result;
for (N = 0; N < array.length; N++) {
if (array[N] % 2 != 0) {
sum += array[N];
i++;
}
}
if (i > 0) {
result = sum / i;
System.out.printf("%.2f", result);
} else
System.out.print("NO");
}
}
3
3
3
5
3,67