Ряд суммы обратных квадратов на java
Здравствуйте!
Подскажите пожалуйста, в чем проблема.
Хочу написать программу на java которая считает сумму обратных квадратов для определеного количества членов. Код прилагается.
public class Main {
public static void main(String[] args) {
int n=1;
float[] members;
members = new float[11];
for(int i = 0; i < 10; i++){
members[i] = 1/n*n;
n++;
if (i == 9) {
float sum = 0;
for (int a = 0; a < members.length; a++) {
sum = sum + members[a];
}
System.out.println(sum);
}
}
}
}
В итоге консоль выдет пустую строку.
Ответы (1 шт):
Автор решения: Михаил Ребров
→ Ссылка
Главное
- Результат деления может приводиться к целому числу из-за того что слева и справа от оператора деления находятся целые числа
- Как верно заметил @AlexKrass в комментариях важна последовательность выполнения операций, поэтому вам следовало бы сгруппировать возведение в квадрат в скобки или использовать
Math.pow()
Другие замечания
- во-первых строка не пустая: у меня выводится
1.0
- мне кажется что в данном случае будет уместнее использовать
double, а неfloat - вы
- определяете массив с 11 элементами
- заполняете 10 элементов
- считаете сумму для 11
- считаете сумму внутри цикла, который заполняет ряд
не надо так делать, просто цикл с подсчетом суммы и разместите его сразу после заполнения - если Вам нужна только сумма - заполнение массива будет лишним.
лишний код, лишняя память, лишние действия
Решение
public class Test {
public static void main(String[] args) {
System.out.println(sumOfInverseSquares(10));
}
public static double sumOfInverseSquares(int size) {
double result = 0;
for(int i = 1; i <= size; i++) {
result = result + 1 / Math.pow(i, 2);
}
return result;
}
}
output:
1.5397677311665408