ฉันได้รับมอบหมายงานต่อไปนี้ และรหัสของฉันใช้งานไม่ได้ คำถามคือ:
ใช้ while หรือ do- While loop เขียนโปรแกรมเพื่อคำนวณ 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);
}
}
ฉันไม่เข้าใจว่าทำไมโค้ดถึงไม่ส่งคืนค่าที่ถูกต้องสำหรับเงื่อนไขของ Pi ตั้งแต่ 3 คำขึ้นไป มันให้ค่าเดิมทุกครั้ง
แก้ไข: ฉันลบเครื่องหมายอัฒภาคออกจากส่วนท้ายของคำสั่ง while และตอนนี้โค้ดกำลังส่งคืนค่า 3.0 สำหรับคำศัพท์จำนวนเท่าใดก็ได้ที่ผู้ใช้ป้อน ฉันจะผิดตรงไหน?
แก้ไข 2: ลบเงื่อนไขออกจาก while loop คำตอบใกล้จะถูกต้องแล้ว แต่ก็ยังไม่แม่นยำเพียงพอ ฉันจะแก้ไขสิ่งนี้เพื่อให้คำตอบที่ถูกต้องได้อย่างไร