1.swith分支结构
基本语法
流程图
快速入门
//请编写一个程序,该程序可以接收一个字符, //比如:a,b,c,d,e,f,g a 表示星期一,b 表示星期二 … import java.util.Scanner; public class Switch01 { //编写一个 main 方法 public static void main(String[] args) { /*案例:Switch01.java 请编写一个程序,该程序可以接收一个字符, 比如:a,b,c,d,e,f,g a 表示星期一,b 表示星期二 … 根据用户的输入显示相应的信息.要求使用 switch 语句完成 思路分析 1. 接收一个字符 , 创建 Scanner 对象 2. 使用 switch 来完成匹配,并输出对应信息 代码*/ Scanner myScanner = new Scanner(System.in); System.out.println("请输入一个字符(a-g)"); char c1 = myScanner.next().charAt(0); // //在 java 中,只要是有值返回,就是一个表达式 switch(c1) { case 'a' : System.out.println("今天星期一,猴子穿新衣"); break; case 'b' : System.out.println("今天星期二,猴子当小二"); break; case 'c' : System.out.println("今天星期三,猴子爬雪山.."); break; //..... default: System.out.println("你输入的字符不正确,没有匹配的"); } System.out.println("退出了 switch ,继续执行程序"); } }
细节讨论
课堂练习题:
//1) 使用 switch 把小写类型的 char 型转为大写(键盘输入)。只转换 a, b, c, d, e. 其它的输出 "other"。 //2) 对学生成绩大于 60 分的,输出"合格"。低于 60 分的,输出"不合格"。 // (注:输入的成绩不能大于 100), 提示 成绩/60 //3) 根据用于指定月份,打印该月份所属的季节。 // 3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季 [课堂练习, 提示 使 用穿透 ] // import java.util.Scanner; public class SwitchExercise { //编写一个 main 方法 public static void main(String[] args) { //1) Scanner myScanner = new Scanner(System.in); System.out.println("请输入一个字符(a-e)"); char c1 = myScanner.next().charAt(0); // //在 java 中,只要是有值返回,就是一个表达式 switch(c1) { case 'a' : System.out.println("A"); break; case 'b' : System.out.println("B"); break; case 'c' : System.out.println("C"); break; case 'd' : System.out.println("D"); break; case 'e' : System.out.println("E"); break; //..... default: System.out.println("other"); } System.out.println("退出了 switch1 ,继续执行程序"); //2) //对学生成绩大于 60 分的,输出"合格"。低于 60 分的, //输出"不合格"。(注:输入的成绩不能大于 100), 提示 成绩/60 //思路分析 //1. 这道题,可以使用 分支来完成, 但是要求使用 switch //2. 这里我们需要进行一个转换, 编程思路 : // 如果成绩在 [60,100] , (int)(成绩/60) = 1 // 如果成绩在 [0,60) , (int)(成绩/60) = 0 //代码实现 System.out.println("请输入成绩"); double score = myScanner.nextDouble(); //使用 if-else 保证输入的成绩有有效的 0-100 //看了当老师的分析和代码演示后,自己一定要独立完成(不看老韩代码,也能写) if( score >= 0 && score <= 100) { switch ((int)(score / 60)) { case 0 : System.out.println("不合格"); break; case 1 : System.out.println("合格"); break; // default : // System.out.println("输入有误"); } System.out.println("退出了 switch2 ,继续执行程序"); } else { System.out.println("输入的成绩在 0-100"); } //3) System.out.println("请输入月份(1-12)"); int month = myScanner.nextInt(); switch(month) { case 3 : case 4 : case 5 : System.out.println(month + "月份是春季"); break; case 6 : case 7: case 8: System.out.println(month + "月份是夏季"); break; case 9: case 10: case 11: System.out.println(month + "月份是秋季"); break; case 12: case 1: case 2: System.out.println(month + "月份是冬季"); break; default: System.out.println("您输入的月份有误"); } System.out.println("退出了 switch3 ,继续执行程序"); } }
2.switch 和 if 的比较
1) 如果判断的具体数值不多,而且符合 byte、 short 、int、 char, enum[枚举], String 这 6 种类型。虽然两个语句都可 以使用,建议使用 swtich 语句。
2) 其他情况:对区间判断,对结果为 boolean 类型判断,使用 if,if 的使用范围更广。
3.for 循环控制(!!!)
基本介绍:听其名而知其意,就是让你的代码可以循环的执行。
基本语法:
老韩说明:
1). for 关键字,表示循环控制 。
2). for 有四要素:
(1)循环变量初始化
(2)循环条件
(3)循环操作
(4)循环变量迭代
3). 循环操作 , 这里可以有多条语句,也就是我们要循环执行的代码 。
4). 如果 循环操作(语句) 只有一条语句,可以省略 {}, 建议不要省。
for 循环执行流程分析:
注意事项和细节说明:
1) 循环条件是返回一个布尔值的表达式.
2) for(;循环判断条件;) 中的初始化和变量迭代可以写到其它地方,但是两边的分号不能省略。
3) 循环初始值可以有多条初始化语句,但要求类型一样,并且中间用逗号隔开,循环变量迭代也可以有多条变量迭代语句,中间用逗号隔开。
For应用练习:
public class ForExercise { //编写一个 main 方法 public static void main(String[] args) { //打印 1~100 之间所有是 9 的倍数的整数,统计个数 及 总和. //[化繁为简,先死后活] //老韩的两个编程思想(技巧) //1. 化繁为简 : 即将复杂的需求,拆解成简单的需求,逐步完成 编程 = 思想 --练习-> 代码 //2. 先死后活 : 先考虑固定的值,然后转成可以灵活变化的值 // // //思路分析 //打印 1~100 之间所有是 9 的倍数的整数,统计个数 及 总和 //化繁为简 //(1) 完成 输出 1-100 的值 //(2) 在输出的过程中,进行过滤,只输出 9 的倍数 i % 9 ==0 //(3) 统计个数 定义一个变量 int count = 0; 当 条件满足时 count++; //(4) 总和 , 定义一个变量 int sum = 0; 当条件满足时累积 sum += i; //先死后活 //(1) 为了适应更好的需求,把范围的开始的值和结束的值,做出变量 //(2) 还可以更进一步 9 倍数也做成变量 int t = 9; int count = 0; int sum = 0; for (int i = 1;i <= 100 ; ) { if (i % 9 == 0) { System.out.println(i + "可以被9整除"); count++; sum += i; } i++; } System.out.println( "9的倍数有"+ count + "个"); System.out.println("总和是" + sum); int j = 0; int k = 5; for (; k > 0; ) { System.out.println(j + "+" + k + "=" + (j + k) ); j++; k--; //老师的解法: // int n = 5; // for( int i = 0; i <= n; i++) { // System.out.println(i + "+" + (n-i) + "=" + n); // } } } }
4.while 循环控制
基本语法:
while 循环执行流程分析:
注意事项和细节说明:
1) 循环条件是返回一个布尔值的表达式 。
2) while 循环是先判断再执行语句。
//打印 40—200 之间所有的偶数 // public class WhileExercise{ public static void main(String[] args){ //化繁为简 // //先死后活 int start = 40; int end = 200; int i = start; while (i <= 200) { if (i % 2 == 0) { System.out.println(i + "是" + start + "到" + end + "之间的偶数"); } i++; } } }
5.do-while 循环控制
基本语法:
循环变量初始化;
do{
循环体(语句);
循环变量迭代;
}while(循环条件);
老韩说明:
1). do while 是关键字。
2).也有循环四要素, 只是位置不一样。
3). 先执行,再判断,也就是说,一定会至少执行一次 。
4). 最后有一个 分号 ; 。
5). while 和 do…while 区别举例: 要账。
do…while 循环执行流程分析:
注意事项和细节说明
1) 循环条件是返回一个布尔值的表达式。
2) do…while 循环是先执行,再判断, 因此它至少执行一次。
课堂练习题
// //1) 打印 1—100 //2) 计算 1—100 的和 //3) 统计 1---200 之间能被 5 整除但不能被 3 整除的个数 // public class DoWhileExercise01{ public static void main(String[] args){ //化繁为简 //先死后活 //1)打印 1—100 int i = 1; do{ System.out.println(i); i++; }while (i <= 100); //2)计算 1—100 的和 int j = 1; int sum = 0; do{ sum += i; j++; }while (j <= 100); System.out.println("1到100的和是" + sum); //3)统计 1---200 之间能被 5 整除但不能被 3 整除的个数 int count = 0; int k = 1; do{ if (k % 5 == 0 && k % 3 != 0) { count++; } k++; }while (k <= 200); System.out.println("1到200之间能被5整除但不能被3整除的个数是" + count); } }
------文章为自学笔记,学习的课程是B站上的韩顺平30天学JAVA,文章标题的天数是自己学习的天数-----