您的位置:程序门 -> java -> j2se / 基础类



菜鸟提问!!


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


菜鸟提问!!
发表于:2007-10-11 15:42:21 楼主
我在自学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个问题,谢谢了
发表于:2007-10-11 15:55:171楼 得分:0
你的
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。
发表于:2007-10-11 16:03:392楼 得分:0
结果   sum2=5050,结果不是5150么?为什么k=100的时候没加上去?  

你数学有问题?
发表于:2007-10-11 16:04:473楼 得分:0
不是5050是什么啊???
发表于:2007-10-11 16:06:314楼 得分:0
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+"   ");  
            }  

}  
}  


是求质数吗??
发表于:2007-10-11 16:06:585楼 得分:0
是我糊涂了,我整个程序是这样的
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
为什么结果会出现这样的情况?我那一步写错了?
发表于:2007-10-11 16:08:476楼 得分:0
第二个问题     是求质数的
发表于:2007-10-11 16:15:337楼 得分:0
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

发表于:2007-10-11 16:24:268楼 得分:0
i=0;sum=0;  
while(i++   <=100)  
{
应改为(多个等号)
i=0;sum=0;  
while(i++   <100)  
{

下一个while循环一样
发表于:2007-10-11 16:28:019楼 得分:0
搞错了吧!
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+"   ");
            }

}
}
发表于:2007-10-11 16:43:5610楼 得分:0
问题没看出来,可是不要用汉语拼音作类名,会显得很外行,呵呵……
英语不好有工具嘛!
一看就是从学c语言开始的,
system.out.print(""+"\n");
用system.out.println("");就ok了。
发表于:2007-10-11 16:44:0711楼 得分:0
========================================================  
结果   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+"     ");
  }
}


发表于:2007-10-11 17:02:1712楼 得分:0
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
发表于:2007-10-12 10:37:3613楼 得分:0
同意ls
发表于:2007-10-12 15:54:0714楼 得分:0
路过~顶下~


快速检索

最新资讯
热门点击