日期:2014-05-20  浏览次数:20703 次

菜鸟提问!!
我在自学JAVA,自己写一个循环的练习
=================================================
import java.io.*;
public class Xunhuan
{
public static void main(String args[])
{
int k;
long sum;

k=0;
sum=0;
for(k=0;k<=100;k++)
{
sum=sum+k;
}
System.out.print("for 1~100:"+ sum+"\n");

}
}
========================================================
结果 SUM2=5050,结果不是5150么?为什么K=100的时候没加上去?

还有个问题是这样的:
======================================
//输入2个数字,求2个数字中的质数。然后显示出来
import java.io.*;
public class Zhishu 
{
public static void main(String args[])
throws IOException
int x=0;
int y = 0;
  int temp=0;
int i=0;
BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
System.out.print("input The first Number:");
x=Integer.parseInt(input.readLine());
BufferedReader input2=new BufferedReader(new InputStreamReader(System.in));
System.out.print("input The sce Number:");
y=Integer.parseInt(input2.readLine());//这之前都是为了获取2个数

if(x>y){ 
temp=x;
x=y;
y=temp;
}

//当第一个数字大于第2个数字的时候调转
for(i=x;i<=y;i++)
// while(x++<y)//循环x~y,否跳出
{
if(i%2!=0)//x不能被2除,否跳出
  {
if(y%i!=0)//y不能被X整除,否跳出
{
  System.out.print(i+" ");
}

}
}

}}

/*上面的代码运行后,我输入了3和11,显示的是 3 5 7 9 
然后输入2和11,显示的是3 5 7 9 
输入2和12,显示的是5 7 9 11
输入3和15,显示 7 9 11 13 
输入1和100则显示了100之内的质数,为什么之前我输入小的数字总是给我4个数字?
*/
=================================================================

麻烦各位JAVA的前辈们帮小弟解答这2个问题,谢谢了

------解决方案--------------------
i=0;sum=0; 
while(i++ <=100) 

sum +=i; 

当i=0时,while判断为true进入循环,判断完后,i自加为1了,所以你每次循环的时候,都多加了一个1,一共循环了101次,当然会多出101了

sum3=0; 
j=0; 
do{ 
sum3=sum3+j; 

while (j++ <=100); 
do{}while语句是先做一次相加,然后判断是否符合循环的while条件,如果符合再进入循环相加,当你加到100时,此时j还是100,而你的sum3已经是5050了,进入while中判断j=100为true,然后j自加变成就j=101,进入do{}中sum3就会多加一个101,所以结果回事5151