JAVAfor循环的问题

ASIA原老弟 2017-12-04 04:24:44
写法一:

public static void main(String[]args){
System.out.println("1+2!+3!+...+20!="+testSum(20));
}

private static long testSum(int n) {
int i,j,temp,sum=0;
for (i=1;i<=n;i++) {
temp=1;
for (j=1;j<=i;j++) {
temp=temp*j;
sum=sum+temp;
}

}
return sum;

}
输出:1+2!+3!+...+20!=-1765964786

写法二:
package iss.no;

public class Test {

public static void main(String[]args){
System.out.println("1+2!+3!+...+20!="+testSum(20));
}

private static long testSum(int n) {
int i,j,temp,sum=0;
for (i=1;i<=n;i++) {
temp=1;
for (j=1;j<=i;j++)
temp=temp*j;
sum=sum+temp;


}
return sum;

}

}
输出 :1+2!+3!+...+20!=268040729
请问for循环后的这个{}为啥区别这么大

...全文
415 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jin6872115 2018-01-02
  • 打赏
  • 举报
回复
方法一中 for (i=1;i<=n;i++) { temp=1; for (j=1;j<=i;j++) { temp=temp*j; sum=sum+temp; } } 改成 for (i=1;i<=n;i++) { temp=1; for (j=1;j<=i;j++) { temp=temp*j; } sum=sum+temp; } 就可以了,方法二相当于省略了大括号
天之上有什么 2017-12-16
  • 打赏
  • 举报
回复
大括号表示是同一块的代码,加上比较好
detzero 2017-12-16
  • 打赏
  • 举报
回复
一般还是用{}显示作用域比较好 ,因为for()之紧跟着的第一句代码是默认为循环体的 。 有时候循环体就一句我懒得写 ,后来加东西的时候不记得补了 ,编译是不会报错的 ,但是结果错的很离谱。 代码量少还好,一扫就能看出来,代码量上来了得找半天难受,还是先养成好习惯比较好。。。。
automationsk 2017-12-16
  • 打赏
  • 举报
回复
for循环后面不加{ } 只能影响一行 所以for循环建议都要加{},以免出错
jiyiliuniany 2017-12-04
  • 打赏
  • 举报
回复
不加{}时,sum=sum+temp这句话作为外层循环执行,所以计算结果不一样
Cathy313 2017-12-04
  • 打赏
  • 举报
回复
不加{},默认第一句为循环内
woshi787070135 2017-12-04
  • 打赏
  • 举报
回复
不加{}则下一行作为for执行的语句,在你第二个代码里 sum=sum+temp;是作为外层循环语句执行的

51,410

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧