这段Java代码错在哪里?

来源:百度知道 编辑:UC知道 时间:2024/05/26 07:21:31
求的是: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);
}
}
但是结果好像不对,错在哪里?谢谢!!!!

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是怎么得出来的。

for循环改成如下

for (int i = 1; i<=99;i+=2){
result += i;
}

仔细看看你循环是怎么控制的!

把for(int i=0;i<=99;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;