int x = 1;
while(x<3)//x<3条件一直满足,while一直执行。
{
system.out.println("x="+x);
}//打印无穷多个x=1。如果要强行结束运行,DOS下按ctrl+c即可。
int x = 1;
while(x<3)
{
system.out.println("x="+x);
x++;
}//打印:
x=1
x=2
int x = 1;
while(x<=10)
{
system.out.println("x="+x);
x+=2;//打印1-10内所以的奇数。即1,3,5,7,9
}
int x = 1;
do
{
system.out.println("do:x="+x);
x++;
}
while(x<0);//打印
do:x=1
对比:
int x = 1;
while(x<0)
{
system.out.println("x="+x);
x++;
}//无显示,无打印
区别:while先判断,再执行。do while先执行后判断。
int y=1;
while(y=3);//无限循环,一直运行,判断y=3.
for(初始化表达式:循环条件表达式:循环后的操作表达式)
for(int x = 0;x<3;x++)
{
system.out.println("x="+x);
//赋初值x=0打印x=0;然后执行x++,x=1。打印x=1;执行x=2。打印x=2;执行x=3,不满足条件x<3,跳出for语句。
}
int y=0;
while(y<3)
{
system.out.print("y="+y+",");
y++;//打印y=0,y=1,y=2,
}
for(int x = 0;x<3;x++)
{
system.out.println("x="+x);
}
system.out.println("x===="+x);
//打印报错,x离开for中的大括号中,就在内存中消失。(变量的作用域)
对比:
int x = 0;
while(x<3)
{
system.out.println("x="+x);
}
system.out.println("x===="+x);//顺利执行。
1、变量有自己的作用域。对于for来讲,则只在for中有效,for语句执行完后,该变量在内存中被释放
2、for和while可以进行互换,如果需要定义循环增量,用for更为适合。
总结:
什么时候使用循环结构?
当要对某些语句执行很多次时,就使用循环结构。
for(system.out.println("a");system.out.println("b");system.out.println("c"))//编译失败。for中循环条件语句既不是真,也不是假,编译不通过。
{
system.out.println("d");
}
对比:
int x = 1;
for(system.out.println("a");x<3;system.out.println("c"))//编译通过。
{
x++;
system.out.println("d");//打印adcdc
}
再对比观察:
int x = 1;
for(system.out.println("a");x<3;system.out.println("c"),x++)
//编译通过。小技巧:用,分隔开多个表达式
{
system.out.println("d");//打印adcdc
}
for(int y=0; y<3; y++)
{
}
可以改成下面:
int y=0;
for(;y<3;)
{
y++;
}
无限循环的最简单表达式
方法1:
for(;;){}
方法2:
while(true){}
01、获取1~10的和,并打印。
class ForTest
{
public static void main(sting[] args)
{//1、定义一个变量用于存储不断变化的和
int sum = 0;
//2、定义变量,记录不断变化的被加的数。
int x = 1;
//3、定义循环,重复加法的过程
while(x<=10)
{
sum = sum + x;//可以用sum+=x;代替
x++;
}
system.out.println("sum="+sum);//一定要明确哪些语句需要参与循环,哪些不需要。
}
}
//思路
0+1
1+2
3+3
6+4
用for语句实现:
int sum = 0;
for(int x=0,x<=10;x++)
{
sum + = x;
}
02、获取1~100之间7的倍数的个数,并打印。
//1、先对1~100进行循环,选用for语句
2、定义条件,只对7的倍数操作,用if语句,条件:x%7==0
3、因为7的倍数的个数不确定,定义一个变量随着7的变量的出现而自增。
class ForTest
{
public static void main(string[] args)
{
int count = 0;
for(int x=1;x<=100;x++)
{
if(x%7==0)
system.out.println("x="+x);
count++;
}
system.out.println("count="+count);
}
}
//累加思想,原理:通过变量记录住循环操作后的结果,通过循环的形式累加。
for(int x=0;x<3;x++)
{
for(int y=0;y<4;y++)
{
system.out.print("*");//打印4次*
}
system.out.println();//只有一个功能就是换行
}
//打印显示如下:
****
****
****
//总结:对于长方形,外循环控制的行数,内循环控制的是每行的列数。
需求:打印出如下的图形:
`````
````
```
``
`
发现图形有很多行,每一行有很多列。使用嵌套循环,原理:形象说法:大圈套小圈。
方法1:改变列的值
int z=5;
for(int x=0;x<5;x++)
{
for(int y=0;y
{
system.out.print("`");
}
system.out.println();
z--;//每一行的个数依次递减,用z--实现。
}
方法2:
int z=0;
for(int x=0;x<5;x++)
{
for(int y=z;y<5;y++)
{
system.out.print("`");
}
system.out.println();
z++;
}
方法3:推荐!!!好记!!!x++,y++
for(int x=0;x<5;x++)
{
for(int y=x;y<5;y++)
{
system.out.print("`");
}
system.out.println();
}
方法4:
for(int x=5;x>0;x--)
{
for(int y=0;y
{
system.out.print("`");
}
system.out.println();
}
for(int x=0;x<5;x++)
{
for(int y=0;y<=x;y++)//让x控制y的打印,从而跟着x递增。
{
system.out.print("*");
}
system.out.println();
}
//显示:
*
**
***
****
*****
//总结:
尖朝上,可以改变条件
尖朝下,可以初始化值
需求:打印下面的数字:
1
12
123
1234
12345
尖朝上,改变内循环中y的条件
for(int x=1;x<=5;x++)
{
for(int y=1;y<=x;y++)
{
system.out.print("y");//是错的,这样打印出来的是字符串y
}
system.out.println();
}
对比
for(int x=1;x<=5;x++)
{
for(int y=1;y<=x;y++)
{
system.out.print(y);//打印正确的12345
}
system.out.println();
}
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
......
for(x=1;x<=9;x++)
{
for(y=1;y<=x;y++)
{
/*system.out.print("x"+"*"+"y"="x*y");错的,不要误解字符串连接符的使用形式。*/
/*system.out.print(x+"*"+y"="+x*y");还是错的,每一行中不变的是x。*/
/*system.out.print(y+"*"+x+"="+x*y);基本实现功能,但打印出来不美观*/
/*system.out.print(y+"*"+x+"="+x*y+"");用空格可以隔开表达式,但当乘积的结果出现两位数,比如8*9时,上下的表达式不整齐*/
/*system.out.print(y+"*"+x+"="+x*y+"\t");用制表符可以轻松搞定*/
}
system.out.println();
}