标签:
教学流程:
循环语句[for while do while]-----循环嵌套----实例应用
内容总结:
1:循环
(1)如果我们发现有很多重复的内容的时候,就该考虑使用循环改进代码。
让代码百年的简洁
(2)循环的组成
A:循环体,就是要做的事情。
B:初始化条件。一般定义的是一个初始变量
C:判断条件。用于控制循环的结束。
D:控制条件。用于控制变量的变化。一般都是一个++/--操作。
(3)循环的分类:
A:for
for(初始化条件;判断条件;控制条件)
{
循环体;
}
执行流程:
a:先执行初始化条件;
b:执行判断条件
c:根据判断条件的返回值:
true:执行循环体。
false:就结束循环。
d:最后执行控制条件。返回到b继续。
B:while
初始化条件;
while(判断条件)
{
循环体;
控制条件;
}
执行流程:
a:先执行初始化条件;
b:执行判断条件
c:根据判断条件的返回值:
true:执行循环体。
false:就结束循环。
d:最后执行控制条件。返回到b继续。
C:do...while
初始化条件;
do{
循环体;
控制条件;
}while(判断条件);
执行流程:
a:先执行初始化条件;
b:执行循环体和控制条件;
c:执行判断条件
d:根据返回值
true:返回b。
false:就结束循环。
注意:
a:一般使用for循环或者while循环。而且这两种循环是可以等价转换的。
b:do...while循环至少执行一次循环体。一般不建议使用。
(4)案例:
A:请在控制台输出5次"我爱Java"
/* 循环应用,for while do while 扩充应用之前所学,从那键盘输入数据。 for、while循环: for:预先知道循环应用的范围; while:不知道最后执行的次数,但是直到结束点。 do while:先执行,后判断,一般不建议使用 */ import java.util.Scanner; class ManyTimes { public static void main(String[] args) { //多次输出结果的时候,需要用循环来控制 Scanner sc = new Scanner(System.in); System.out.println("请输入重复打印次数:"); int runTimes = sc.nextInt(); for(int x=0;x<runTimes;x++) { System.out.println("我爱Java!"); } System.out.println("---------------------"); int y=0; while(y<runTimes) { System.out.println("我爱Java!"); y++; } System.out.println("---------------------"); int z=0; do{ System.out.println("我爱Java!"); z++; }while(z<runTimes); } }
B:求1-10的和,改进位求1-100的和。
C:求1-100之间偶数的和。
/* 功能需求: 求1-100之和。 求1-100之间偶数和。 思路: 一、 1,1-100的变量; 2,和的累加 二、在一的基础上,挑选出偶数 */ class NumberAdd { public static void main(String[] args) { //1,求1-100之和 int sum = 0; for(int x=1;x<=100;x++) { sum += x; } System.out.println("1-100的和是:sum = "+sum); //2,求1-100的偶数和 int result = 0; for(int x=1;x<=100;x++) { if(x%2==0) result += x; } System.out.println("1-100的和是:result = "+result); } }
D:求5的阶乘。
/* 输入数据,得到阶乘结果 */ import java.util.Scanner; class JieCheng { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入待计算阶乘的数:"); int num = sc.nextInt(); int result = 1; for(int x=1;x<=num;x++) { result *= x; } System.out.println(num+"! ="+result); } }
E:水仙花。
/** 打印出所有的"水仙花数"。 所谓“水仙花数”是指一个三位数,其每一位数字立方和等于该数本身。例如: 153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。 提示: 1:采用循环取得所有的三位数。(三位数指的是100-999之间的数)。 2:把每个三位数的个位,十位,百位进行分解。 输出水仙花数: 100-999之间,每个位上的数的立方和等于这个数的本身的数 思路: 1,确定范围,使用合适的循环体; 2,对这个数进行每个位的拆解,除与模联合使用 3,进行判断 */ class FlawerDemo { public static void main(String[] args) { for(int x=100;x<1000;x++) { int bai = x/100; int shi = x/10%10; int ge = x%10; if(x == bai*bai*bai+shi*shi*shi+ge*ge*ge) System.out.println(x+"\t"+"for循环"); } System.out.println("****************************"); int firstNum = 100; while(firstNum<1000) { int bai = firstNum/100; int shi = firstNum/10%10; int ge = firstNum%10; if(firstNum == bai*bai*bai+shi*shi*shi+ge*ge*ge) System.out.println(firstNum+"\t"+"while循环"); firstNum++; } System.out.println("****************************"); firstNum = 100; do { int bai = firstNum/100; int shi = firstNum/10%10; int ge = firstNum%10; if(firstNum == bai*bai*bai+shi*shi*shi+ge*ge*ge) System.out.println(firstNum+"\t"+"do while循环"); firstNum++; }while(firstNum<1000); System.out.println("****************************"); } }
F:统计叠多少次,能叠成珠穆朗玛峰的高度。
/* 珠峰高度是8848米,一张足够大的纸厚度为0.01米, 折叠多少次,有珠峰这个高度 */ class MoutainDemo { public static void main(String[] args) { double height = 0.01; int count = 0; while(height <= 8848) { height *=2; count++; } System.out.println("总共叠加次数:"+count); } }
(5)循环嵌套:
A:也就是循环语句的循环体是一个循环语句。
B:通过输出 我们不断的改进。发现了一个问题:外循环控制行数,内循环控制列数。
(6)案例:
A:正三角形
内循环的判断条件:y<=x
for(int x=0; x<5; x++)
{
for(int y=0; y<=x; y++)
{
System.out.print("*");
}
System.out.println();
}
B:倒三角形
内循环的初始化条件:y=x
for(int x=0; x<5; x++)
{
for(int y=x; y<5; y++)
{
System.out.print("*");
}
System.out.println();
}
C:九九乘法表
/** 循环嵌套使用 注意事项: 1,外层循环控制行数,内存循环控制列数; 2,换行:System.out.prinlt("\n");//System.out.prinltln(); 3,可以考虑进行方法封装。 */ class ForDouble { public static void main(String[] args) { for(int x=0;x<6;x++) { for(int y=0;y<5;y++) { System.out.print("*"); } System.out.print("\n");//System.out.println(); } //System.out.println("Hello World!"); //经典实例:九九乘法表 for(int i=1;i<=9;i++) { for(int j=1;j<=i;j++) { System.out.print(i+"*"+j+"="+i*j+" "); } System.out.println(); } for(int i=1;i<=9;i++) { for(int j=1;j<=i;j++) { System.out.print(j+"*"+i+"="+i*j+" "); } System.out.println(); } //调用方法,输出矩形 printStart(8,5); printStart(6,9); } public static void printStart(int row,int line) { for(int i=0;i<row;i++) { for(int j=0;j<line;j++) { System.out.print("*"); } System.out.print("\n"); } } }
2:break和continue
(1)有些时候,我们需要对循环进行一些控制终止,这个时候,就出现了两个关键字:
break和continue
(2)特点:
A:它们都必须在循环中(break还可以在switch中。)。
一般在循环的判断中。
B:如果单独使用break和continue,后面是不能有语句的。
(3)区别:
A:break 结束当前循环。
B:continue 结束本次循环,进入下一次循环。
(4)如何退出嵌套循环:
用带标签的循环。
格式:
标签名:for(){
for(){
if()
{
break 标签名;//continue也能用,但是注意别形成死循环
}
}
}
3:应用场景
(1)变量:发现有一个数据是变化的时候,就要用变量。
(2)if语句:如果是一个范围的判断,boolean类型的表达式的判断,几个数据的判断。
(3)switch语句:几个数据的判断。一般这种情况,有限选择switch。
(4)for语句:如果次数或者范围特别明确。(水仙花)
(5)while语句:如果次数或者范围不明确。(珠穆朗玛峰)
标签:
原文地址:http://www.cnblogs.com/zhidianhcuan/p/4343215.html