java定义变量问题

申码程序 2017-12-04 03:39:11
package main;


public class Main {

public static void main(String[] args) {
// TODO Auto-generated method stub
int sum=0;
for (int i=1;i<=1000;i++)
{
for (int j=1;j<i;j++)
{
if (i%j==0)
{
sum+=j;
}
}
if (i==sum)
{
System.out.println(i);
}
}
}
}
[b]代码如上:int sum=0;放在for循环外的时候 运行后无结果;当把int sum =0放在第一层for循环里才出现结果 这是为什么?
理论应该是 在最外层定义,{}块里都可以使用的呀! 还请各位大神告知!多谢
...全文
194 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Cathy313 2017-12-04
  • 打赏
  • 举报
回复
你放外面,sum遇到i%j==0就加j,
当i=1时,
j=1;不满足j<i,不执行sum += j; 无输出
当i=2时,
j=1;执行sum += j;//此时sum=0+1=1;无输出
当i=3时,
j=1;执行sum += j;//此时sum=1+1=2;无输出
当i=4时,
j=1,2;执行sum += j;//此时sum=2+1+2=5;无输出
当i=5时,
j=1;执行sum += j;//此时sum=5+1=6;无输出
当i=6时,
j=1,2,3;执行sum += j;//此时sum=6+1+2+3=12;无输出
。。。
没有满足i == sum的情况,自然没有输出。
你放在外循环内时候,
当i=1时,sum=0,
j=1;不满足j<i,不执行sum += j; 无输出
当i=2时,sum=0,
j=1;执行sum += j;//此时sum=0+1=1;无输出
当i=3时,sum=0,
j=1;执行sum += j;//此时sum=0+1=1;无输出
当i=4时,sum=0,
j=1,2;执行sum += j;//此时sum=0+1+2=3;无输出
当i=5时,sum=0,
j=1;执行sum += j;//此时sum=0+1=1;无输出
当i=6时,sum=0,
j=1,2,3;执行sum += j;//此时sum=0+1+2+3=6;满足i == sum,有输出
————————
有满足i == sum的情况自然就有输出,你要想清楚自己的逻辑,你到底想要什么

最后,代码能处理一下再发吗?格式看得很困难,明明CSDN提供处理的选项,为什么那么多人不用,发的人爽了,看的人累死
woshi787070135 2017-12-04
  • 打赏
  • 举报
回复
是可以用的,就看需求了,你放外面就是整个main从头到尾一个sum,放在里面外循环每进行一次,就会有一个新的sum从0开始
是镜花水月 2017-12-04
  • 打赏
  • 举报
回复
你这循环逻辑都错了
zk_Kang 2017-12-04
  • 打赏
  • 举报
回复
引用 1 楼 zhang_kang_user 的回复:
放在循环外面,sum的值会根据两个for循环,进行改变,放在第一个for里面,则每次for的时候,都会重新创建一个sum对象。。
你应该就是外面定义,里面赋值,就是int sum放在外面,for里面给赋值,为sum=0;
zk_Kang 2017-12-04
  • 打赏
  • 举报
回复
放在循环外面,sum的值会根据两个for循环,进行改变,放在第一个for里面,则每次for的时候,都会重新创建一个sum对象。。

51,396

社区成员

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

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