这段Java代码错在哪里?

求的是:1+3+5+。。。。。+99=?我的算法是:publicclassoddsum{publicstaticvoidmain(String[]args){longre... 求的是:1+3+5+。。。。。+99=?
我的算法是:
public class oddsum {
public static void main(String[] args){
long result = 0;
for (int i = 0; i<=99;i++){
i = 2 * i + 1;
result += i;
}
System.out .println("result=" + result);
}
}
但是结果好像不对,错在哪里?谢谢!!!!
展开
 我来答
lewanzi
2009-11-12 · TA获得超过1067个赞
知道小有建树答主
回答量:351
采纳率:61%
帮助的人:173万
展开全部
for (int i = 0; i<=49;i++){
System.out.println(2 * i+1);
result = result+2 * i + 1;

}

你错的关键是你没搞明白变量的程序转换
//i<=99次 等于你做了100次循环,但你后来的条件又使这100次循环变少了
for (int i = 0; i<=99;i++){
//第一次的i在这里i = 2 * i + 1计算后为1,第二次进来时i++会变为2, i = 2 * i + 1后i会变5 所以这个循环最多也就十来次完事
i = 2 * i + 1;
result += i;
}

我试了一下 你看到吧 最多也就六次循环
1
5
13
29
61
125
result=234

经验就是 少用i 进行i=i+x-b之类的操作 会把自己搞晕的。

另外调试时多用system.out.println进行打印关键变量,会使你很快搞明白一个问题的关键错误点。你的问题就是在for里加一个打印
System.out.println(2 * i+1); 就很容易看出问题所在。至少一眼就能看出你的234是怎么得出来的。
蝶儿忙
2009-11-12 · TA获得超过1.1万个赞
知道大有可为答主
回答量:2629
采纳率:0%
帮助的人:0
展开全部
for循环改成如下

for (int i = 1; i<=99;i+=2){
result += i;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
躲错气9
2009-11-12 · TA获得超过684个赞
知道小有建树答主
回答量:936
采纳率:0%
帮助的人:593万
展开全部
仔细看看你循环是怎么控制的!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
拜小凝05U
2009-11-12 · TA获得超过183个赞
知道答主
回答量:138
采纳率:0%
帮助的人:94.8万
展开全部
把for(int i=0;i<=99;i++)
改为for(int i=0;i<49;i++)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
aozatan
2009-11-12
知道答主
回答量:4
采纳率:0%
帮助的人:0
展开全部
public class oddsum {
public static void main(String[] args){
long result = 1;
for (int i = 1; i<=99;i+=2){
result += i;
}
System.out .println("result=" + result);
}
}

...大家回答的真快, 搞的我像复制的似的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2009-11-12
展开全部
for (int i = 1; i<=99;i+=2){
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式