黑马程序员技术交流社区
标题:
帮忙看下这段程序哪里错了
[打印本页]
作者:
郭炜
时间:
2012-3-4 01:15
标题:
帮忙看下这段程序哪里错了
求1-/2+1/3-1/4+、、、、、、、-1/98+1/99 的和
class chen {
public static void main(String[]args){
int i;
float s=0.0,y;
for(i=1;1<=99;i++){
if(i%2==0)
y=1.0/i*(-1);
else
y=1.0/i;
s+=y;
}
System.out.println(s);
}
}
作者:
佟都
时间:
2012-3-4 01:39
本帖最后由 tongdu_simon 于 2012-3-4 02:09 编辑
/**
求1-1/2+1/3-1/4+、、、、、、、-1/98+1/99的和
*/
class Test
{
public static void main(String[] args)
{
int i;
double s=0.0,y;
for(i=1;i<=99;i++){
if(i%2==0)
y=1.0/i*(-1);
else
y=1.0/i;
s+=y;
}
System.out.println(s);
}
}
复制代码
存在2个问题:
1、精度问题 float→double;
2、拼写错误 for( ;
i
<=99; )
作者:
段玉超
时间:
2012-3-4 01:49
import java.lang.*;
public class Sum
{
public static void main(String[] args)
{
int flag =-1;
float sum=0;
for(int i =1; i<=99; i++){
flag = -flag;
sum += flag /(float)i;
}
System.out.println(sum);
}
}
复制代码
作者:
曹晓涵
时间:
2012-3-4 02:31
本帖最后由 曹晓涵 于 2012-3-4 02:57 编辑
/*类(Classes) 命名规则:chen改为Chen,不改也不影响运行结果
1)类名必须由大写字母开头,一个单词中的其他字母均为小写字母
2)若多单词组成。则建议每个单词的首字母均大写,如TestDemo
3)若类名中包含单词缩写,则建议将这个词的每个字母均为大写,如XMLDemotional
4)类名尽量用名词
*/
class Chen {
public static void main(String[]args){
int i;
/* 错误1:float s=0.0,y; 改为 float s=0.0f,y;
此处定义s为float型的变量,0.0小数系统默认为double型的变量,
直接将double赋值给float会丢失精度,小数后需加上f表示float型。
*/
float s=0.0f,y;
//若变量名s改为sum显得更有意义
/*错误2:for(i=1;1<=99;i++)改为for(i=1;i<=99;i++)
此处1<=99为死循环,将1<=99改为i<=99
*/
for(i=1;i<=99;i++){
if(i%2==0)
/*错误3:y=1.0/i*(-1)改为y=(float)(1.0/i*(-1))
在前面定义变量时时将y同样定义为float类型,而后面的公式
有小数1.0参与运算,运算结果自动提升为double类型,因此
需要整个公式用括号括起来并强制类型转换为float类型后再
赋值给y
*/
y=(float)(1.0/i*(-1));
else
/*错误4: y=1.0/i改为 y=(float)(1.0/i)
错误原因同错误3
*/
y=(float)(1.0/i);//
s+=y;
}
/*说明:觉得本题中的for 循环也可以写成下面形式显得更为简洁
for(i=1;i<=99;i++){
y=(float)(1.0/i);
if(i%2==0)
s-=y;
else
s+=y;
}
*/
System.out.println(s);
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2