首先你的for循环没有加大括号,养成习惯后以后写代码可能会对排错造成困难;其次,你的for循环里的循环变量应该是 i ,而你写的是 n ,这是造成你程序出错的原因。你的公式没有问题,不过可以写的更简洁一些。
import java.util.Scanner;
public class Test {
public static void main(String[] arg){
Scanner input = new Scanner(System.in);
int n =input.nextInt();
double sum = 1;
int flag= -1;
for(int i = 1; i < n; i++){
// sum += (1.0 / (4 * i + 1)) - (1.0 / (4 * i - 1)); 这段代码可以修改为如下代码
sum += flag*(1.0 / (2 * i + 1)) ;
flag *= -1; //flag 会 1,-1,1,-1 ...循环
System.out.println(flag); //跟踪flag的值
System.out.println(4*sum);//跟踪 PI 的值
}
sum *= 4;
System.out.println(sum); //最终的输出
System.out.println(Math.PI); //Math是一个工具类,里面封装了很多常用的数学方法
//PI代表圆周率的估值,Math.PI=3.141592653589793
}
}
import java.util.Scanner;
import org.junit.Test;
public class ExportDBTest {
@Test
public void test() {
//题目要求:π = 4 * ( 1 - 1/3 + 1/5 - 1/7 + 1/9 ........)
Scanner input = new Scanner(System.in);
int n = input.nextInt()*2+2;
double num=1;
boolean sum_sub=true;
for(double i = 1; i < n; i++){
if(i%2==1 && i!=1){
if(sum_sub){
num-=1/i;
System.out.println("括弧内本次结果="+num);
sum_sub=false;
}else{
num+=1/i;
System.out.println("括弧内本次结果="+num);
sum_sub=true;
}
}
}
double sum = 4* (num);
System.out.println(sum);
}
}
括号内运算符规律:1-*+*-*+*.......
用循环取出括号内值,再根据boolean sum_sub 判断该加该减
然后用4*num即可
注意:for(double i = 1; i < n; i++) 而且不是for(int i = 1; i < n; i++){
import java.util.Scanner;
public class findpai {
public static void main(String[] arg){
//π = 4 * ( 1 - 1/3 + 1/5 - 1/7 + 1/9 ........)
// n= 1 2 3 4 5
// 1/2n-1
Scanner input = new Scanner(System.in);
int n = input.nextInt();
double sum = 0;
for(int i = 1; i < n; i++){
if(i%2!=0){
sum+=1.0/(2*i-1);
}else{
sum-=1.0/(2*i-1);
}
}
sum *= 4;
System.out.println(sum);
}
}
sum+ = (1/(4*i +1)) - (1/(4*i - 1)) ;
sum* = 4;
应该是这样了, 你再看下吧