求π的值,java

importjava.util.Scanner;publicclassfindpai{publicstaticvoidmain(String[]arg){Scanneri... import java.util.Scanner;
public class findpai {
public static void main(String[] arg){
Scanner input = new Scanner(System.in);
int n = input.nextInt();
double sum = 1;
for(int i = 1; i < n; i++)
sum += (1.0 / (4 * n + 1)) - (1.0 / (4 * n - 1));
sum *= 4;
System.out.println(sum);
}
}
题目要求:π = 4 * ( 1 - 1/3 + 1/5 - 1/7 + 1/9 ........)
求π的估值。我写的程序好像值是错的,错在哪儿?帮忙指点迷津!!谢谢!
展开
 我来答
百度网友e3b1108
2013-07-23 · 超过21用户采纳过TA的回答
知道答主
回答量:50
采纳率:100%
帮助的人:36万
展开全部

        首先你的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
  }
}
百度网友7ad4c49d2
2013-07-22 · 超过15用户采纳过TA的回答
知道答主
回答量:48
采纳率:0%
帮助的人:37.1万
展开全部
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++){
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lkstarsea
2013-07-22 · TA获得超过315个赞
知道小有建树答主
回答量:201
采纳率:100%
帮助的人:188万
展开全部
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);
}
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
聒噪恬静
2013-07-22
知道答主
回答量:7
采纳率:0%
帮助的人:5.3万
展开全部
sum+ = (1/(4*i +1)) - (1/(4*i - 1)) ;
sum* = 4;

应该是这样了, 你再看下吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式