这段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);
}
}
但是结果好像不对,错在哪里?谢谢!!!! 展开
我的算法是:
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);
}
}
但是结果好像不对,错在哪里?谢谢!!!! 展开
6个回答
展开全部
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是怎么得出来的。
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是怎么得出来的。
展开全部
for循环改成如下
for (int i = 1; i<=99;i+=2){
result += i;
}
for (int i = 1; i<=99;i+=2){
result += i;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
仔细看看你循环是怎么控制的!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把for(int i=0;i<=99;i++)
改为for(int i=0;i<49;i++)
改为for(int i=0;i<49;i++)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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);
}
}
...大家回答的真快, 搞的我像复制的似的
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){
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询