循环语句
1.for循环语句
1.1 for循环结构
特征:重复做某件事情,具有明确的开始和停止标志
循环结构的组成:
初始化语句:用于表示循环开启时的起始状态,简单的说就是循环开始的时候什么样
条件判断语句:用于表示循环反复执行的条件,简单的说就是判断循环能否能一直执行下去
循环体语句:用于表示循环反复执行的内容,简答的说就是循环反复执行的事情
条件控制语句:用于表示循环执行中每次变化的内容,简单的说就是控制循环是否能执行下去
循环结构对应的语法:
初始化语句:这里可以是一条或多条语句,这些玉奴可以完成一些初始化操作
条件判断语句:这里使用一个结果值为boolean类型的表达式,这个表达式决定是否执行循体。例如:a<3
循环体语句:这里可以是任意语句,这些语句将反复执行
条件控制语句:这里通常是使用一条语句来改变变量的值,从而的达到控制循环是否继续向下执行的效果。常见i++,i--这样的操作。
1.2 for循环结构格式
格式:
for(初始化语句;判断条件语句;条件控制语句){
循环体语句;
}
执行流程:
①执行初始化语句
②执行条件判断语句,看其他结果是true还说false
如果是false,循环结束
如果是true,继续执行
③执行循环体语句
④执行条件控制语句
⑤回到②继续
演示代码:
package com.scxh.day01;
public class Demo01For {
public static void main(String[] args) {
//要求在控制台输出五次“HelloWorld”
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("--------------");
//循环改进
for (int i=1; i<=5; i++){
System.out.println("HelloWorld");
}
}
}
输出结果:
2.while循环语句
2.1while循环语句基本格式
基本格式: while(条件判断语句){ 循环体语句; }
完整格式: 初始化语句; while(条件判断语句){ 循环体语句; 条件控制语句; }
执行流程:
① 执行初始化语句
②执行条件判断语句,看其他结果是true还说false
如果是false,循环结束
如果是true,继续执行
③执行循环体语句
④执行条件控制语句
⑤回到②继续
代码演示:
package com.scxh.day01; public class Demo01While { public static void main(String[] args) { //需求:在控制台输出五次“HelloWorld” int i = 1; while (i<=5){ System.out.println("HelloWorld"); i++; } } }
3.do…while循环语句
3.1
基本格式: do{ 循环体语句; }while(条件判断语句);
完整格式: 初始化语句; do{ 循环体语句; 条件控制语句; }while(条件判断语句);
执行流程:
① 执行初始化语句
②执行循环体语句
③执行条件控制语句
④执行条件判断语句,看其他结果是true还说false
如果是false,循环结束
如果是true,继续执行
⑤回到②继续
演示代码:
package com.scxh.day01; public class Demo01DoWhile { public static void main(String[] args) { //需求:在控制台输出五次“HelloWorld” int i = 1; do { System.out.println("HelloWorld"); i++; }while (i<=5); } }
拓展:死循环
//死循环 for (;;){ System.out.println("for"); } while (true){ System.out.println("while"); } do { System.out.println("do…while"); }while (true);
3.2 三种循环的区别
三种循环的区别:
- for循环和while循环先判断条件是否成成立,然后决定是否执行循环体(先判断后执行)
- do…whill循环先执行一次循环体,然后判断条件是否成立,是否继续执行循环体(先执行后判断)
三种循环的区别:
- 条件控制语句所控制的自增变量,因为归属for循环的语法结构中,在for循环结束后,就不能再次被访问到了
- 条件控制语句所控制的自增变量,对于while循环来说不归属其语法结构中,在while循环结束后,该变量还可以继续使用。
三种循环的区别:
for (;;){ }
while (true){ }
do { }while (true);
while的死循环格式是最常用的
命令提示符窗口中Ctrl+C可以结束死循环
4.跳转控制语句
4.1 跳转控制语句概述
- continue 用在循环中,基于条件控制,跳过某次循环体内容的执行,继续下一次的执行
- break 用在循环中,基于条件控制,终止循环体内容的执行,也就是说结束当前的整个循环
代码演示:
package com.scxh.day01; public class Demo01Control { public static void main(String[] args) { for (int i = 1; i<=5; i++){ if (i%2 == 0){ continue; // break; } if (i%2 == 0){ // continue; break; } System.out.println(i); } } }
5. 循环嵌套
5.1 循环嵌套概述
语句结构:
- 顺序语句 以分号结尾,表示一句话的结束
- 分支语句 一对大括号表示if的整体结构,整体描述一个完整的if语句
一对大括号表示switch的整体结构,整体描述一个完整的switch语句
- 循环语句 一对大括号表示for的整体结构,整体描述一个完整的for语句
一对大括号表示while的整体结构,整体描述一个完整的while语句
do...while以分号结尾,整体描述一个完整的do...while语句
任何语句对外都可以看成是一句话,一句代码
分支语句中包含分支语句成为分支嵌套
循环语句中包含循环语句成为循环嵌套
代码演示:
package com.scxh.day01; /* 循环嵌套: 循环语句中包含循环语句 需求: 在控制台输出一天的小时和分钟 分钟和小时范围: 分钟: 0 <= minute < 60 小时: 0 <= hour < 24 */ public class Demo01ForFor { public static void main(String[] args) { /* System.out.println("0时0分"); System.out.println("0时1分"); System.out.println("0时2分"); System.out.println("0时3分"); System.out.println("---------"); System.out.println("1时0分"); System.out.println("1时1分"); System.out.println("1时2分"); System.out.println("1时3分"); System.out.println("---------"); System.out.println("2时0分"); System.out.println("2时1分"); System.out.println("2时2分"); System.out.println("2时3分"); */ /* //循环改进 for (int minute=0; minute<4; minute++){ System.out.println("0时"+ minute +"分"); } System.out.println("---------"); for (int minute=0; minute<4; minute++){ System.out.println("1时"+ minute +"分"); } System.out.println("---------"); for (int minute=0; minute<4; minute++){ System.out.println("2时"+ minute +"分"); } System.out.println("---------"); */ //外循环控制小时的范围,内循环控制分钟的范围 for (int hour=0; hour<24; hour++){ for (int minute=0; minute<60; minute++){ System.out.println(hour + "时"+ minute +"分"); } System.out.println("----------"); } } }
显示结果:
6. Random
6.1 Random的作用和使用步骤
作用: 用于产生一个随机数
使用步骤:
① 导包
import java.util.Random; //导包动作必须出现在类定义的上方
② 创建对象
Random r = new Random(); // 上面这个格式里面,r是变量名,可以改变,其他的都不允许改变
③获取随机数
int number = r.nextInt(10); // 获取数据的范围:[0,10)包括0,不包括10 // 上面这个格式里面,number是变量名,可以变,数字10可以变。其他的都不允许变。
代码演示:
package com.scxh.day01; import java.util.Random; public class Demo01Random { public static void main(String[] args) { Random r = new Random(); // int number = r.nextInt(10); // 获取数据的范围:[0,10)包括0,不包括10 // System.out.println(number); // 用循环获取十个随机数 for(int i=0; i<10; i++ ){ int number = r.nextInt(10); // 获取数据的范围:[0,10)包括0,不包括10 System.out.println("number:" + number); } //用随机数获取一个1-100之间的随机数 int x = r.nextInt(100) + 1; System.out.println(x); } }
演示结果:
案例:猜数字
需求:系统自动生成一个1-100之间的数字,实用程序实现猜出这个数字是多少?
当猜错的时候根据不同情况给出相应的提示。
- 如果猜的数字比真实数字大,提示你猜的数据大了。
- 如果猜的数字比真实数字小,提示你猜的数据小了。
- 如果猜的数字与真实数字相等,提示你恭喜你猜中了。
分析:
① 要完成猜数字的游戏,首先需要有一个要猜的数字,使用随机数生成该数字,范围1-100
Random r = new Random(); int number = r.nextInt(100)+1;
② 因为无法预知几次能够猜中,因此猜数字这个操作应该是反复进行的,需要使用循环,而while循环通常用于描述未知循环次数的循环。
while(条件){}
③ 使用程序实现猜数字,每次均要输入猜测的数值,需要使用键盘的录入功能实现
Scanner sc = new Scanner(System.in); int guessNumber = sc.nextInt();
④ 比较输入的数字和系统产生的数据,需要用分支语句,这里使用if…else…if格式来实现,根据不同情况进行猜测结果显示,当猜中后使用break结束循环即可。
if(条件:比要猜的数字大){ }else if(条件:比要猜的数字小){ }else{ break; }
代码演示:
package com.scxh.day01; import java.util.Random; import java.util.Scanner; /* 需求:系统自动生成一个1-100之间的数字,实用程序实现猜出这个数字是多少? 当猜错的时候根据不同情况给出相应的提示。 1.如果猜的数字比真实数字大,提示你猜的数据大了。 2.如果猜的数字比真实数字小,提示你猜的数据小了。 3.如果猜的数字与真实数字相等,提示你恭喜你猜中了。 */ public class Test01Random { public static void main(String[] args) { // 要完成猜数字的游戏,首先需要有一个要猜的数字,使用随机数生成该数字,范围1-100 Random r = new Random(); int numbear = r.nextInt(100)+1; while (true){ // 使用程序实现猜数字,每次均要输入猜测的数值,需要使用键盘的录入功能实现 Scanner sc = new Scanner(System.in); System.out.println("请输入你想要输入的数字:"); int guessNumber = sc.nextInt(); // 比较输入的数字和系统产生的数据,需要用分支语句,这里使用if…else…if格式来实现,根据不同情况进行猜测结果显示,当猜中后使用break结束循环即可。 if(guessNumber > numbear){ System.out.println("你猜的数字"+ guessNumber +"大了"); }else if (guessNumber < numbear){ System.out.println("你猜的数字"+ guessNumber +"小了"); }else { System.out.println("恭喜你猜中了"); break; } } } }
演示结果: