六:循环结构概述
1,定义:
在某一个问题域中,重复执行的懂或一系列行为:就叫做循环。
如果这种行为在程序中体现,就是循环结构。
2,循环四要素的执行时机;
初始化条件:正循环结构执行之前。
判断条件:
每次执行完循环体,在进入下一次循环之前,都需要执行一次。
循环体:只要执行循环,就必须执行。
控制条件:是在上一次循环之后,下一次开始循环之前。
3,如何使用循环结构处理问题域:
A:先要确定问题域的解决方法是使用循环结构。
B:再确定符合问题域需求的循环四要素。
C:按照循环四要素,选择某一个循环结构语法解题。
七:for循环结构
1,语法:
for(初始化条件;判断条件;控制条件){
循环体
}
2,循环中的循环自变量和步长
循环自变量:他通常用于控制循环次数。
循环步长:本次循环结束,下一次循环时循环自变量的改变量。
eg:
class ForDemo{
public static void main(String[] args){
//循环程序中的循环自变量和循环步长
// x 就是循环自变量,通常用来控制循环次数
//循环自变量的作用域在循环体内部
//循环步长通常是指下一次循环时循环自变量和上一次循环中循环自变量的改变值。
//以下的循环代码中,每次循环 x 都比上一次循环 +1,
//那么此循环结构的步长就是 1
//for(int x=1;x<=10;x++)
for(int x=1;x<=10;x+=1){
System.out.println("现在跑的是第"+x+"圈");
}
}
}
八:for循环练习题 1
如下题,就可以把初始化条件定义为2,循环步长定为2,同一可以解题
eg:
class ForDemo2{
public static void main(String[] args){
/*
请使用循环结构输出1-10,10个数字的偶数
第一种解题:
初始化条件 2
判断条件 10
循环体 输出
控制条件 2每次循环完,下一次之前 x 值+2;
for(int x=2;x<=10;x+=2){
System.out.println("10以内的偶数是:"+x);
}
*/
/*
第二种解题:
初始化条件 1
判断条件 10
循环体:
要把每个数都要判断是否是偶数,如果是偶数就输出。
通过以上的描述,确定选择if结构解题
如果使用if结构,判断条件是 是否是偶数
能被2整除 如果x%2==0;则 x 就是偶数
控制条件 1每次循环完,下一次循环之前 x 值+1
*/
for(int x=1;x<=10;x++){
//使用if结构
if(x%2==0){
System.out.println("x="+x);
}
}
}
}
for循环练习题 2
请使用循环结构求1-5,5个数字的和值。
分析:
找出1-5,5个数字使用循环结构的依据
必须要找出在计算过程中可以重复执行的操作
0+1=1
1+2=3
3+3=6
6+4=10
10+5=15
0 1 3 6 10 都是上一次计算的结果
1 2 3 4 5 都是本次执行的自变量
规律:上一次计算的结果+本次计算的自变量
eg:
class ForDemo3{
public static void main(String[] args){
//请使用循环结构求1-5,5个数字的和值
//根据对以上题目的分析
//找出了循环的规律,上一次计算的结果+本次计算的自变量
int sum=0;//代表上次计算的结果
//本次计算的自变量,可以在循环体内直接使用
for(int i=1;i<=5;i++){
sum+=i;//这一步做的就是循环体,上一次计算的结果+本次计算的自变量
}
System.out.println("1-5的和是:"+sum);
}
}
for循环练习题 3
阶乘:5!=1*2*3*4*5
eg:
class ForDemo4{
public static void main(String[] args){
//请使用循环结构计算5的阶乘
//定义一个阶乘变量
//int cj=1;//因为每次循环体都是执行乘法,所以这个乘积两需要从1开始计算
//开始使用for循环结构计算5
for(int x=1;x<=5;x++){
cj*=x;
}
System.out.println("5的阶乘是:"+cj);
}
}
八:while循环结构
1,语法:
while(判断条件){
循环体
控制条件
}
2,执行流程
A:先执行初始化条件
B:在执行判断条件
C:如果判断条件是true,则执行循环体。
D:执行循环体后,执行控制条件。
E:再次执行判断条件
F:B,C,D,E反复执行,直到判断条件为false,退出循环,while循环结束。
eg:
class WhileDemo{
public static void main(String[] args){
//跑10圈
int x=10;//初始化条件
while(x<=10){
//x<=10是判断条件
System.out.println("跑的是第"+x+"圈");
x++;//控制条件
}
}
}
3,while循环练习题 1
class WhileDemo2{
public static void main(String[] args){
//请使用while循环计算1-10的和值
int x=1;//初始化条件(循环自变量)
int m=0;//和值变量
while(x<=10){
//x<=10是判断条件
m+=x;//规律,每次把上一次的计算结果和这一次的自变量相加
x++;..控制条件
}
System.out.println("和为:"+m);
}
}
4,for循环结构和while循环结构的区别
A;初始化条件位置的区别
for循环结构:
初始化条件通常写在for循环定义的括号内部;
初始化条件相关的变量的作用域范围在循环体内部(for循环的大括号内部)
B:而while循环结构的初始化条件一定在while的括号外部
for循环和while循环的使用时机;
如果问题域确定使用循环结构,如果循环次数能确定,则首先选择使用for循环。
九:do……while循环结构
1,语法:
初始化条件
do{
循环体
控制条件
}while(判断条件);
2;执行流程
A:执行初始化条件
B:执行循环体
C:执行控制条件
D:执行判断条件
E:如果判断条件是true,则开始执行循环体
F:如果判断条件是false,则do……while循环结束
G:如 D ;E ,F 反复执行,直到判断条件为false,do……while结构结束。
eg:
class DoWhileDemo{
public static void main(String[] args){
int i=1;//初始化条件
do{
System.out.println("跑的是第:"+i+"圈");
i++;//控制条件
}while(i<=10);//判断条件
}
}
3,do……while循环结构的特点:
do……while循环的循环体在第一次执行时,肯定被执行。
判断条件是从第二次循环开始才每次都需要执行判断条件。
eg:
class DoWhileDemo2{
public static void main(String[] args){
int i=11;
do{
System.out.println("自学java");
i++;
}while(i<=10);//以上输出的i值是12,说明以上的do……while循环执行一次。
System.out.println("i="+i);//12
}
}
十:for循环、while循环和do……while循环的区别:
1,如果是判断条件是true,才会执行循环体。
如果判断条件是false,则结束循环体。
do……while循环时必须先执行一次循环体,在以后的循环体执行之前
都必须先执行一次判断条件。
2,for循环和while循环的区别(这两个很重要)
A:for循环的循环初始化条件通常都写在for的括号内部,作用域范围只是在
循环体内部。
B:通常,如果问题域的循环次数可以固定,则首先选择使用for循环。
C:如果要使用死循环解决问题,则首先选择while循环。
十一:死循环:
1,定义:死循环就是一直在执行循环体,不退出循环结构
2,死循环不是成心错误,死循环是某种需求的解决方法。
3,死循环发生的时机。
A:while(true)中,只要使用死循环解题,首先选择while(true)
B:for(初始化条件;true;控制条件)
C:丢失控制条件(通常是在while和do……while中容易出现)一般是程序错误
eg:
class DoWhileDemo3{
public static void main(String[] args){
//死循环样例
int i=1;
//可以编写死循环代码
//while(true){
//System.out.println("i="+i);
//i++;
//}
//编程出现问题
while(i<=10){
System.out.println("现在跑的是"+i+"圈");
}
}
}
十二:循环结构中的break和continue:
1,break:
在循环中,一旦在循环体中执行到break;
则立即跳出循环结构(循环结构结束),继续往下执行。
2,continue:
在循环中,一旦在循环体中执行到continue,
则立即跳出当前循环,进入下一次循环。
eg:
class XunHuanDemo{
public static void main(String[] args){
//break
/*
for(int i=1;i<=10;i++){
System.out.println(i);
//如果是偶数,就开始执行break
if(i%2==0){
break;
}
}
*/
//continue
for(int i=1;i<=5;i++){
System.out.println("1 i="+i);
//如果是偶数,就开始执行continue
if(i%2==0){
System.out.println("2 i="+i);
}
System.out.println("game over");
}
}
}
十三:循环嵌套
需求:
请使用循环结构,输出一个5*4的 *号组成的矩形
*****
*****
*****
*****
题目分析:
1,以上的题目不要同时从两个维度思考问题
2,先输出“*****”
输出“*”号,输出5次,循环5次
初始化条件 1
判断条件 5
循环体 输出*号
控制条件 +1
3把“*****”看成一个整体
输出*****,输出4次,循环4次。
初始化条件 1
判断条件 4
循环体 2里面的输出*号
控制条件 +1
注意:在编写程序中,要把复杂尽量简单化;
要把复杂的尽量分步化,要把多维的一维化;
eg:
class XunHuanDemo2{
public static void main(String[] args){
//把“*****”作为循环体,循环4次
//先输出*****
for(int i=1;i<=4i++){
for(int x=1;x<=5;x++){
//println方法每次输入会换行,不符合要求
//可以使用另外一种print方法
System.out.println("*");
}
//每次输出*****之后需要换行
System.out.println();
}
}
}