模块四. 流程控制语句
第一章. Scanner
键盘录入
1. 概述:Scanner类是java定义好的一个类 2. 作用:将数据通过键盘录入的形式放到代码中参与运行 3. 位置:包 java.util 下 4. 使用: a. 导包:通过导包找到要使用的类 明确使用的是哪个包下的哪个类 ->导包位置:类 上 import java.util.scanner -> 导入的是哪个包下的哪个类 b. 创建对象 Scanner 变量名 = new Scanner(System.in); c. 调用方法,实现键盘录入 变量名.nextInt() 输入整数int型 变量名.next() 输入字符串 String型 变量名.next(): 录入字符串 —> 遇到空格和回车就结束录入 变量名.nextLine(): 录入字符串 -> 遇到空格依然录入,遇到回车才结束录入
异常-> InputMismatchException 输入类型不匹配异常 原因:实际录入的数据和要求录入的数据类型不一致
第二章. Random
随机数
学习Random和学习Scanner方式方法一样
1. 概述:Random同样是java自带的一个类 2. 作用:可以在指定的范围内随机一个整数 3. 位置:java.util 4. 使用: a.导包:import java.util.Random b.创建对象: Random 变量名 = new Random(); c.调用方法,生成随机数: 变量名.nextInt() -> 在int的取值范围内随机一个整数 (+-21亿里随机一个 整数) 在指定范围内随机生成一个数 变量名.next(int bound) -> 在0-(bound-1) 范围内 变量名.nextInt(10) -> 0-9范围 在1-10之间随机一个数: nextInt(10)+1 -> (0-9)+1 -> 在1-10范围 或者 nextInt(1,10)
第三章. 流程控制语句
学
switch
if
循环必须要先掌握定义格式,然后掌握执行流程(带一个数进去,根据执行流程观察值的变化)
1. switch
基本使用
1. 格式: switch(变量){ case 常量值1: 执行语句1; break; case 常量值2: 执行语句2; break; case 常量值3: 执行语句3; break; ... default: 执行语句n; break; } 2. 执行流程: 用变量接受的值和下面case后面的常量值匹配,匹配上哪个case就执行哪个case对应的 执行语句(类型需要一样) 如果以上所有case都没有匹配上,就走default对应的执行语句n; 3. break关键字:代表的是结束switch语句 4. 注意:switch 能匹配什么类型的数据: byte short int char 枚举类型 String类型 (float double则不能,因为 switch 是精准匹配,而float double 存在精度损失 问题,float精度损失更严重)
2. case
的穿透性
1. 如果没有 break ,就会出现 case 的穿透性,程序就一致往下穿透执行,直到遇到了 break 或者 switch 代码执行完毕,就停止了
第四章. 分支语句
1. if
的三种格式
1. 格式: if(boolean表达式){ 执行语句; } if(boolean表达式) 执行语句; 2. 执行流程: 先走if后面的boolean表达式,就走if后面大括号中的执行语句,否则就不走 3. 注意: if后面跟的是boolean表达式,只要是结果为boolean型的,都可以放在小括号中,哪 怕直接写一个true或者false
1. 格式: if(booelan表达式){ 执行语句1; }else{ 执行语句2; } 2. 执行流程: a.先走if后面的boolean表达式,如果是true,就走if后面的执行语句1 b.否则就走else后面的执行语句2 3. if else不可能同时走
1. 格式: if(boolean表达式1){ 执行语句1; }else if(boolean表达式2){ 执行语句2; }else if(boolean表达式3){ 执行语句3; }...else{ 执行语句n; } 2. 执行流程: 从if开始往下挨个判断,哪个if判断结果为true,就走哪个if对应的执行语句,如果以 上所有的判断都是false,就走else对应的执行语句n 3. 使用场景:2种情况以上的判断
public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("请输入data1的值(int型):"); int data1 = sc.nextInt(); System.out.print("\n"); System.out.print("请输入data2的值(int型):"); int data2 = sc.nextInt(); System.out.print("\n"); /*if (data1 > data2){ System.out.println(data1 + ">" + data2); }else if (data1 < data2){ System.out.println(data1 + "<" +data2); }else { System.out.println(data1 + "=" + data2); } */ if (data1 > data2){ System.out.println(data1 + ">" + data2); }else if (data1 < data2){ System.out.println(data1 + "<" +data2); }else if(data1 == data2){ System.out.println(data1 + "=" + data2); } }
注意:最后一种情况,不一定非得用else,但是必须要保证所有的情况都判断了
2. 练习
1. 任意给出一个整数,请用程序实现判断该整数是奇数还是偶数,并在控制台输出该整数是奇数还是偶数 2. 利用if else 求出两个数的较大值 3. 案例: 从键盘输入年份, 请输出该年的2月份的总天数。闰年2月份29天,平年28天。 闰年:(ab都要考虑) a.能被4整除,但是不能被100整除 b.或者能直接被400整除 4. 需求: 键盘录入一个星期数(1,2,....7),输出对应的星期一,星期二,...星期日 例如: 输入 1 输出 星期一 输入 2 输出 星期二 ... 输入 7 输出 星期日 输入 其他数字 输出 数字有误 5. 根据最新的年龄段划分标准: 0-6岁为婴幼儿 7-12岁为少儿 13-17岁为青少年 18-45岁为青年 46-69岁为中年 69岁以上为老年 请键盘录入一个年龄,判断属于什么年龄段
3. if else
和 switch
区别
switch
和if
的区别:debug(可以看代码的执行流程)
switch 会直接跳到相匹配的case(精准匹配)
if:从上到下挨个判断 ->实际开发常用if ,灵活
第五章. 循环语句
1. 什么时候使用循环语句
当我们发现一件事或者一段代码在反复执行,可以考虑使用循环语句
2. for
循环
1. 格式: for(初始化变量;比较;步进表达式){ 循环语句; //哪段代码循环执行,就将哪段代码放到此处 } 2. 执行流程: a. 先走初始化变量 b. 比较,如果是 true ,走循环语句,然后才走步进表达式(初始化的变量的值进行变 化) C. 再比较,如果还是 true ,继续走循环语句,再走步进表达式 d. 再比较,知道比较结果为 false ,循环结束 3. 快捷键: 循环次数.fori 回车练习
练习
1. for循环:求1-3之间的数据和,并把求和结果输出到控制台 2. 需求:求出1-100之间的偶数和 3. 统计一下1-100之间的偶数个数
3. while
循环
1. 格式: 初始化变量; while(比较){ 循环语句; 步进表达式; } 2. 执行流程: a. 初始化变量 b. 比较,如果是true,就走循环体内的语句(循环语句和步进表达式) c. 再比较,如果是true,继续走循环语句,继续走步进表达式 d. 再比较,直到比较为false,循环结束
4. do...while
循环(了解)
1. 格式: 初始化变量; do{ 循环语句; 步进表达式; }whie(比较); 2. 执行流程: a. 初始化变量 b. 走循环语句 c. 走步进表达式 d. 判断,如果是true,继续循环,直到比较为false,循环结束 3. 特点: 至少循环一次
5. 循环控制关键字
1. break: a. 在 switch 中代表结束 switch 语句 b. 在循环中代表结束循环 2. continue: 结束当前本次循环,直接进入下一次循环,直到条件为 false 为止
6. 死循环
1. 概述: 一直循环 2. 什么条件下一直循环: 比较条件一直是 true
public class Demo01Endless { public static void main(String[] args) { //死循环 // int count = 0; // for (int i = 0; i < 10; ) { // count++; // System.out.println("I Love Java" + count); // } //死循环 // for (;;){} while(true){ System.out.println("I Love Java !"); } } }
7. 嵌套循环
1. 概述:循环中还有循环 2. 执行流程: 先执行外层循环,再进入内层循环,内层循环就一直循环,直到内层循环结束,外层循环 才进入下一次循环,然后再进入内层循环,(此时内层循环是重新进入的)内层循环从最 开始循环,直到内层循环结束,就这样,直到外层循环结束,整体结束
public class Demo02Nest { public static void main(String[] args) { for (int fen = 0; fen < 60; fen++) { for (int miao = 0; miao < 60; miao++) { System.out.println(fen + "分" + miao + "秒"); } } }
练习
1. 打印矩形: 2. 打印直角三角形 3. 猜数字小游戏:录入数字比随机数字大 则猜大了,反则猜小了,一样则猜对了 1. 创建 Scanner 和 Random 对象 2. 调用Random中的 nextInt(100)+ 1 在1~100之间随机一个数 rdNumber 3. 调用Scanner中的nextInt()方法,键盘录入一个你猜的数 scNumber 4. 如果scNumber大于rdNUmber,证明猜大了 5. 如果scNumber小于rdNUmber,证明猜小了 6. 如果scNumber等于rdNUmber,证明猜对了