我在自学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个问题,谢谢了

解决方案 »

  1.   

    你的
    for(k=0;k <=100;k++)
    {
    sum=sum+k;

    是K = 0;开始循环,到K=100结束。 从0开始加到100和是 (0+100)/2 *101=5050;
    你的输出
    System.out.print("for 1~100:"+ sum+"\n");
    居然是说1到100的循环,不过和还是5050。
      

  2.   

    结果 SUM2=5050,结果不是5150么?为什么K=100的时候没加上去? 你数学有问题?
      

  3.   

    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+" "); 
          } } 

    是求质数吗??
      

  4.   

    是我糊涂了,我整个程序是这样的
    import java.io.*;
    public class Xunhuan
    {
    public static void main(String args[])
    {
    int i,j,k;
    long sum,sum2,sum3;i=0;sum=0;
    while(i++<=100)
    { sum +=i;

    }
    k=0;
    sum2=0;
    for(k=0;k<=100;k++)
    {
    sum2=sum2+k;
    }
    sum3=0;
    j=0;
    do{
    sum3=sum3+j;
    }
    while (j++<=100);

    System.out.print("while 1~100:"+ sum+"\n");
    System.out.print("for 1~100:"+ sum2+"\n");
    System.out.print("do-while 1~100:"+ sum3+"\n");
    }
    }
    3个结果分别是 5151 5050 5151
    为什么结果会出现这样的情况?我那一步写错了?
      

  5.   

    while(i++ <=100) 
    for(k=0;k <=100;k++) 
    while (j++ <=100); 就是这3句的问题
    i++<=100  是你取i与100比较而实际i已经加1,因此下面的语句所得结果始终会多1(从1开始)
    而for(k=0;k<=100;k++) 所做的循环致使之后的语句所使用的k值依然从0开始给你点示例看看
              int i=0,b=0;
               while(i++<2)
                  System.out.println(i);
               for(;b<2;b++)
                System.out.println(b);
    结果:
    1
    2
    0
    1
      

  6.   

    i=0;sum=0; 
    while(i++ <=100) 
    {
    应改为(多个等号)
    i=0;sum=0; 
    while(i++ <100) 
    {下一个while循环一样
      

  7.   

    搞错了吧!
    3和11之间只有4个质数:3,5,7,9
    2和11之间只有4个质数:3,5,7,9
    3和15只见有7个质数:3 5 7 9 11 13 15 
    你的结果显示7 9 11 13 显然错误!
    错在循环:
    在for循环重是判断i是否是质数,你首先判断它是否是奇数这是对的,问题在第二个IF(Y%I!=0)。
    整个循环应该为:
    int j=2;
    for( i=x;i <=y;i++,j++)
    // while(x++ <y)//循环x~y,否跳出
    {
    if(i%2!=0)//x不能被2除,否跳出
                  {
     if(i%j!=0)//y不能被X整除,否跳出
        {
                        System.out.print(i+" ");
          }}
    }
      

  8.   

    问题没看出来,可是不要用汉语拼音作类名,会显得很外行,呵呵……
    英语不好有工具嘛!
    一看就是从学C语言开始的,
    System.out.print(""+"\n");
    用System.out.println("");就OK了。
      

  9.   

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

       结果本来就是5050呀

    下面是一个求质数年的部分程序://*******  x < y **********for(int i = x ;i< y ;i++){
      
       //比较是否是质数是需要用它去除以2---->  i/2 当然也可以是(i 开平方)
      int m = i/2 ;
      int a = 2 ;
     while(a < m){
        if(i%a==0)
               continue ;
         a++;
      }
      if(a == m){
       System.out.println(i+"  ");
     }
    }
      

  10.   

    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