简单的问题!指教!在线等待!急用!谢谢!!!
import java.io.*;
import java.text.DecimalFormat;
public class example{
public static void main(String args []){
double x,y=0;
int s=1;
int m=1;
try{
System.out.println("Please enter the value of x:");
BufferedReader a = new BufferedReader(new InputStreamReader(System.in));
x = Double.parseDouble(a.readLine());
for(int j=1;Math.abs(Math.pow(x,2*j)/m)>=0.000001;j++){
m = m*2*j*(2*j-1);
y = 1+(-1)*s*Math.pow(x,2*j)/m;
}
DecimalFormat df = new DecimalFormat("0.000000");
System.out.println("x="+x+"\n"+"cos(x)="+df.format(y));
}catch(IOException e) { }
}
}
为什么输入0.0-1.5之间是可以的,输入2.0以后就什么反映都没用了!?
问题点数:10、回复次数:7Top
1 楼showone()回复于 2004-12-03 20:11:16 得分 2
for(int j=1;Math.abs(Math.pow(x,2*j)/m)>=0.000001;j++){
m = m*2*j*(2*j-1);
System.out.println("m="+m);
y = 1+(-1)*s*Math.pow(x,2*j)/m;
System.out.println("Y="+y);
}
看看结果,溢出了!Top
2 楼waitanotherday()回复于 2004-12-03 20:18:36 得分 0
还有一个问题,关于switch-case 语句的
case后面的常量表达式包括int,char,byte和short,
但String 也行吗!?Top
3 楼sc20184()回复于 2004-12-03 20:39:21 得分 2
我记得Case不能使StringTop
4 楼l28791002(の奔奔)回复于 2004-12-03 20:39:41 得分 2
case 后面是常量表达式,所以应该可以是String,楼主可以编程试试啊Top
5 楼l28791002(の奔奔)回复于 2004-12-03 20:43:45 得分 0
啊,不好意思,我也刚刚编了一下,好象在java中比较不行的,真的不好意思,脸红一下Top
6 楼waitanotherday()回复于 2004-12-03 20:57:07 得分 0
不过我刚刚试过,可以啊!Top
7 楼febchen()回复于 2004-12-03 22:12:40 得分 4
double x,y=0;
int s=-1; //s初始值为-1
long m=1; //m数据类型改为long,溢出主要在此,其他为逻辑错误.
double temp=1;
try{
System.out.println("Please enter the value of x:");
BufferedReader a = new BufferedReader(new InputStreamReader(System.in));
x = Double.parseDouble(a.readLine());
y=1;
for(int j=1;Math.abs(Math.pow(x,2*j)/m)>=0.000001;j++){
m = m*2*j*(2*j-1);
y = y+s*Math.pow(x,2*j)/m;
s=s*(-1); //加上这句
/*
为防止溢出,可以加上:
if(Double.isInfinite(y)){
System.out.println("overflow");
break;
}
*/
}
.....
Top




