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循环里才出现结果 这是为什么?
理论应该是 在最外层定义,{}块里都可以使用的呀! 还请各位大神告知!多谢
...全文
135 5 点赞 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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对象。。
  • 打赏
  • 举报
回复
相关推荐
发帖
Java
加入

4.8w+

社区成员

Java相关技术讨论
申请成为版主
帖子事件
创建了帖子
2017-12-04 03:39
社区公告
暂无公告