循环结构:
while do while for
格式:
while (条件表达式)
{
循环体(执行语句);
}
注意:int x = 1;
while(x<=2)
{
System.out.println(“x=”+x);
x++;
}
与 int x = 1;
x++;
while(x<=2)
{
System.out.println(“x=”+x);
}
的区别是上面的只有两次循环而下面的则是无限循环,因为while下面的大括号会一直执行而不返回x++。
do while 格式:
do
{
循环体(执行语句)
}
while (条件表达式);
do while 与while的区别在于:do while无论条件是否满足,循环体至少执行一次。
for格式:
for (初始化表达式;循环表达式;循环后的操作)
{
执行语句;
}
如:for (int x = 0;x<3;x++)
{
System.out.println(“x=”+x);
}
执行流程图:
for与while的区别: 如果变量只为控制循环次数作为循环增量而存在的话,为了节约内存用for语句更合适,其实for与while可以互换。如:上图中的x出了for语句就不存在了
小知识点:
变量有自己的作用域,对于for来讲,如果将用于控制循环的增量定义在for语句中,那么该变量只在for语句内有效,for语句执行完毕,该变量在内存中被释放。
for与while可以互换,如果需要定义循环增量,用for语句。
什么时候使用循环结构?
当某些语句执行很多次时,就是用循环结构。
例:int x = 1;
for (System.out.println(”a”);x<3;System.out.println(“b”);System.out.prinntln(”c”),x++)
{
System.out.println(“d”);
}
打印结果是?
adcdc
走流程即可得出。
注意:条件表达式必须要有真假。for循环里面不一定都是int x = 1,只要是合法表达式就行。当有多个表达式时可以用逗号分开,如上例中的System.out.prinntln(”c”),x++。for里面的初始化表达式可以不写,循环后的表达式也可以不写。
无限循环的最简单表现形式:for (;;){} 对于for,不写条件表达式默认就是ture,while的即是while (ture){}
例:获取1~10的和,并打印。
//1.定义变量用于存储不断变化的和。
int sum = 0;
//定义变量,记录住不断变化的被加的数
int x = 1;
//定义循环,重复加法的过程
while(x<=10)
{
sum = sum + x;
x++;
}
System.out.println(“sum=”+sum);
for语句表现形式(更合适):
int sum = 0;
for (int x = 0;x<=10;x++)
{
sum += x;
}
System.out.println(”sum=”+sum);
例:1~100之间7的倍数的个数,并打印。
思路:1.先对1到100进行循环(遍历)
2.在遍历的过程中定义一个条件:只对7的倍数进行操作
3.因为7的倍数不确定,只要符合条件,就通过一个变量来记录住这个变化的次数。
步骤:1.选择for语句
2.再循环中定义判断,只要是7的倍数即可,使用if语句。条件“7的倍数:x%7=0
3.定义变量,该变量随着7的倍数的出现而自增。
int count = 0;
for (int x = 1; x<=100; x++)
{
if (x%7==0)
count++;
}
System.out.println(“count=”count);
总结(累加思想):原理是通过变量(如count)记录住每次循环操作后的结果(如count++)。通过循环的形式,进行累加动作。
(计数器思想):通过一个变量记录住数据的状态变化,也需要通过循环完成。
语句嵌套形式:其实就是语句中还有语句。
循环嵌套:循环中还有循环
如:for (int x = ;x<3;x++)
{
for (int y = 0;y<4;y++)
{System.out.print(“*”);}
System.out,prinrln();}
print与println的区别在于后者会自动换行
上图打印的结果就是
****
****
****
总结:对于打印长方形,外循环控制的是行数,内循环控制的是每一行的列数,也就是一行中元素的个数。
例:打印 *****
****
***
**
*
*
* *
***
****
*****
分析:发现图形有很多行,每一行有很多列。要使用嵌套循环。原理:大圈套小圈
解法:
class ForFor01
{
public static void main(String[] args)
{
for (int x = 0 ;x<5 ;x++ )
{
for (int y = x;y<5 ;y++ )
{
System.out.print("*");
}
System.out.println();
}
}
}
class ForFor02
{
public static void main(String[] args)
{
for (int x=0; x<5 ;x++ )
{
for (int y=0 ; y<=x ;y++ )
{
System.out.print("*");
}
System.out.println();
}
}
}
不是规律的规律:尖朝上,可以改变条件,让条件随着外循环变化;尖朝下,可以改变初始化值,让初始化值随着外循环变化。
例:打印
1
12
123
1234
12345
class ForFor03
{
public static void main(String[] args)
{
for (int x=1;x<=11;x++)
{
for (int y=1;y<=x ;y++ )
{
System.out.print(y);
}
System.out.println();
}
}
}
例:打印
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
class ForFor04
{
public static void main(String[] args)
{
for (int x=1; x<=3; x++)
{
for (int y=1;y<=x ;y++ )
{
System.out.print(y+"*"+x+"="+y*x+"\t");
}
System.out.println();
}
}
}
2.6.4 其他流程控制语句:
break(跳出):只应用与选择结构和循环结构。
continue(继续):只应用于循环结构。
注意:
这两个语句离开应用范围,存在是没有意义的。这两个语句单独存在下面都不可以有语句,因为执行不到。continue语句是结束本次循环继续下次循环。标号的出现,可以让两个语句作用于指定的范围。
如:
for (int x =0;x<3;x++)
{
if(x>1)
break;
System.out.println(“hello world”);p
}
w :for (int x = 0 ;x<3;x++)
{
q :for (int y=0;y<4;y++)
{
System.our.println(“hello world”);
break w;
}
}
continue只能作用于循环结构,继续循环.特点:结束本次循环,继续下次循环。
for (int x=0;x<3;x++)
{
if (x%2=1)
continue;
System.out.println(“x=”+x);
}
w :for (int x=0;x<3;x++)
{
for(int y=0,y<4;y++)
{
System.out.println(“x=”+x);
continue w;
}
}
例:打印
*
* *
* * *
* * * *
* * * * *
class Test
{ public static void main(String[] args)
{
for(int x=0;x<5;x++)
{
for(int y=x+1;y<5;y++)
{
System.out.print(" ");
}
for(int z=0;z<=x;z++)
{
System.out.print("* ");
}
System.out.println();
}
}
}