Мне дали следующее задание, и мой код не работает. Вопрос в том:
Используя цикл while или do-while, напишите программу для вычисления PI по следующему уравнению: PI = 3 + 4/(2*3*4) - 4/(4*5*6) + 4/(6* 7*8) - 4/(8*9*10) + ... Разрешить пользователю указывать количество терминов (показано 5 терминов) для использования в вычислении. Каждый раз в цикле к оценке PI следует добавлять только один дополнительный член.
Это код, который у меня есть: import java.util.Scanner; импортировать javax.swing.JOptionPane; импортировать java.lang.Math;
public class LabFriday25 {
public static void main(String[] args) {
String termInput = JOptionPane.showInputDialog(null, "How many terms of
PI would you like?");
Scanner termScan = new Scanner (termInput);
double termNum = termScan.nextDouble();
double pi = 3;
int count = 0;
double firstMul = 2;
double secMul = 3;
double thirdMul = 4;
double totalMul = 0;
while (count<= termNum)
{
if (termNum==1)
{
pi = 3.0;
}
else if (count%2==0)
{
totalMul= (4/(firstMul*secMul*thirdMul));
}
else
{
totalMul = -(4/((firstMul+2)*(secMul+2)*(thirdMul+2)));
}
pi = pi + (totalMul);
firstMul = firstMul + 2;
secMul = secMul + 2;
thirdMul = thirdMul + 2;
//totalMul = (-1)*totalMul;
count++;
}
JOptionPane.showMessageDialog(null, "The value of pi in " + termNum + " terms is : " + pi);
}
}
Я не могу понять, почему код не возвращает правильное значение для 3 или более членов числа Пи, он каждый раз дает одно и то же значение.
РЕДАКТИРОВАТЬ: я удалил точку с запятой в конце оператора while, и теперь код возвращает значение 3.0 для любого количества терминов, введенных пользователем. Где я ошибаюсь?
EDIT2: удалено условие из цикла while. Ответы близки к правильным, но все же недостаточно точны. Как я могу исправить это, чтобы дать мне правильный ответ?