几个简单的小问题

Lecsap 2015-04-29 11:30:42
1.输出满足1+2+3+.....+n<8888的最大正整数n
public static void main(String[] args) {
int sum=0,n=1;
while(true){
sum=sum+n;
n=n++;
if(sum>=8888){
break;}
}
System.out.println("满足条件的最大正整数:"+(n-1));
}
这个哪错了啊 为什么结果是0?

2.1000以内的完数
public static void main(String[] args) {
for(int i=1;i<=1000;i++){
int sum=0;
for(int j=1;j<i;j++){
if(i%j==0){
sum+=j;
}
}
if(sum==i){
System.out.print(i+"的因数是");
for(int j=1;j<i;j++){
if(i%j==0){
System.out.print(j+" ");
}
}
}
}
}
我把int sum=0移动到for循环的前边怎么就没结果了?

3.public static void main(String[] args) {
int x=1,y=6;
while(y-->0){
x--;
}
System.out.println("x="+x+",y="+y);
}
结果为什么是-5 -1,y=0的时候不满足条件循环不是应该终止了么?
...全文
139 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
AISY_NULL 2015-05-04
  • 打赏
  • 举报
回复
直接改成n++
fengyu_caihong 2015-04-29
  • 打赏
  • 举报
回复
1题n=n++;改为n++ 2题因为你放在方面只初始化一次~sum一直在累加~放在里面每次循环都初始化0一次 3.题循环体执行了六次所以x为-5,y由于是判断所以最后不执行循环体那次也执行了y--,故y=-1
a1379706 2015-04-29
  • 打赏
  • 举报
回复
1.n=n++;这句有问题改成n+1或者++n 3.y是先执行判断才自减

50,549

社区成员

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

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