大家好,又见面了,我是你们的朋友全栈君。
/**输入一个正整数repeat(0
/*
* 输入一个正整数repeat (0
读入1 个正实数eps,计算并输出1-1/3+1/5-1/7+……,
直到最后一项的绝对值小于eps为止(要求每一项的绝对值均大于等于eps,并以float类型输出数据)。
例:括号内是说明
输入
2 (repeat=2)
1E-4
0.1
输出
0.7853482
0.83492064
*/
importjava.util.Scanner;
publicclass Test40006 {
public static void main(String[] args){
int ri, repeat;
int temp, flag; //temp变量干什么用?
int i; //自己加上的变量
double eps, item, sum;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri<=repeat; ri++){
eps=in.nextDouble();
/*——————–*/
sum=0;
item=1.0;
flag=-1;
i=1;
while(Math.abs(item)>=eps)
{
sum=sum+item;
item=(double)flag/(2*i+1);
flag=-flag;
i++;
}
System.out.println((float)sum);
}
}
}
例子中的 while(Math.abs(item)>=eps) 知道Math.abs(x)是取x的绝对值的,item是1.0就是说Math.abs(item)>=eps 就等于1.0>=eps,这是不是就是说eps只有比1.0大就可以进入while循环内啊??
说白了 这个例子中取item的绝对值有什么意思?是想实现什么?如果我输入eps=3 那么while(Math.abs(item)>=eps) item也不可能大于等于3啊??
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/125678.html原文链接:https://javaforall.cn