次の割り当てが与えられましたが、コードが機能しません。質問は:
while または do-while ループを使用して、次の式を使用して PI を計算するプログラムを作成します。 PI = 3 + 4/(2*3*4) - 4/(4*5*6) + 4/(6* 7*8) - 4/(8*9*10) + ... 計算で使用する項の数 (5 つの項が示されています) をユーザーが指定できるようにします。ループを回るたびに、PI の推定値に項を 1 つだけ追加する必要があります。
これは私がこれまでに持っているコードです: import java.util.Scanner; import 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);
}
}
コードが Pi の 3 項以上に対して正しい値を返さない理由がわかりません。毎回同じ値を返し続けます。
編集: while ステートメントの末尾からセミコロンを削除したところ、コードはユーザーが入力した任意の数の用語に対して値 3.0 を返しています。どこが間違っていますか?
EDIT2: while ループから条件を削除しました。正解に近づいていますが、まだ十分に正確ではありません。これを修正して正しい答えを得るにはどうすればよいですか?