我正在学习我的第一个Java编程课程,这是我的第一个课程.我对如何处理它感到很困惑.任何帮助或更正将不胜感激.
您可以使用以下系列来估算常量PI的值:
PI = 4 ( 1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + ... + ( (-1)^(i+1) )/ (2i - 1) )
Run Code Online (Sandbox Code Playgroud)
提示用户输入i的值(换句话说,使用此系列中的多少项)来计算PI.例如,如果用户输入10000,则对该系列的前10,000个元素求和,然后显示结果.
除了显示最终结果(PI的最终近似值)之外,我希望您沿着中间数的方式显示每个10的幂.所以10,100,1000,10000等等,向屏幕显示近似值PI的总和元素数量.
这是我到目前为止所做的..
import java.util.Scanner;
public class CalculatePI {
public static void main(String[] args) {
// Create a Scanner object
Scanner input = new Scanner (System.in);
// Prompt the user to enter input
System.out.println("Enter number of terms");
double i = input.nextDouble(); // value of i user entered
double sum = 0;
for(i=0; i<10000; i++){
if(i%2 == 0) // if the remainder of `i/2` is 0
sum += -1 / ( 2 * i - 1);
else
sum += 1 / (2 * i - 1);
}
System.out.println(sum);
}
}
Run Code Online (Sandbox Code Playgroud)
我看到的第一件事是你试图从你的void main方法返回一个值.
不要return pi;从你的主要方法.打印出来.
System.out.println(pi);
Run Code Online (Sandbox Code Playgroud)
其次,当人们写一个for循环时,他们通常会迭代i,这可能与i你的教授在公式中提到的相同
for(double i=0; i<SomeNumber; i++)
{
sum += ((-1)^(i+1)) / (2 * i - 1) );
}
Run Code Online (Sandbox Code Playgroud)
现在,这将无法正常工作,你仍然必须处理^,java本身不使用.幸运的是,你-1^(i+1)是一个交替的数字,所以你可以使用一个if声明
for(double i=0; i<SomeNumber; i++)
{
if(i%2 == 0) // if the remainder of `i/2` is 0
sum += -1 / ( 2 * i - 1);
else
sum += 1 / (2 * i - 1);
}
Run Code Online (Sandbox Code Playgroud)