我在自学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个问题,谢谢了
=================================================
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个问题,谢谢了
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。
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+" ");
} }
}
是求质数吗??
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
为什么结果会出现这样的情况?我那一步写错了?
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
while(i++ <=100)
{
应改为(多个等号)
i=0;sum=0;
while(i++ <100)
{下一个while循环一样
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+" ");
}}
}
英语不好有工具嘛!
一看就是从学C语言开始的,
System.out.print(""+"\n");
用System.out.println("");就OK了。
结果 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+" ");
}
}
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