高手进 java 程序设计

来源:百度知道 编辑:UC知道 时间:2024/05/21 11:26:51
sum=0
for(int i=0;i<=10;i++)
for(int j=10;i>2*i;i--)
sum=sum+(j-i)

答案是165 请说明下理由

你程序有问题嘛,除非把第二个循环for(int j=10;i>2*i;i--) 改成for(int j=10;j>2*i;j--)

如果这样:那当i等于5的时候,j就不会成立了。
在5之前,都会进入循环:
i=0的时候:
10>2*0 -->执行sum = 0 +(10-0);
进入判断-->j>2*i ..9>2*0?
...共执行10次,依次累加:
sum = 10+9;
...
sum = ..+1;== 55

第二次进入for(int i=0;i<=10;i++) ..i=1
执行完j==3时候跳出
sum = 55 + (10-1);
sum = 64+(9-1);
..sum = ..+(3-1)
sum = 99

..以下继续…直到i==5的时候,再也不会进入循环体。

你的程序有问题,不过我改了一下,你执行下面的代码就可以很清楚的看到它累加的过程了:
public static void main(String args[]){
int sum=0;
for(int i=0;i<=10;i++){
System.out.println("第"+(i+1)+"外循环:");
for(int j=10;j>2*i;j--){
sum=sum+(j-i);
System.out.println("sum="+sum+":"+(sum-(j-i))+"+"+(j-i));
}
}
}

没理由!就相当于1+1=2!