目录
一. switch 多重条件分支
switch语句根据switch (表达式)计算的结果,跳转到匹配的case结果,然后继续执行后续语句,直到遇到break结束执行。
语法格式:
switch(表达式) { case 常量1: 语句1 case 常量2: 语句2 ...... case 常量n: 语句n default: 语句n+1 }注意事项:
●switch具有语法的穿透(表达式等于某个常量,进入到此常量后对应的语句块后,后面case不会比较遇到break停下来,switch结束运行)
●表达式:--基本数据类型:byte short char int
--引用:String--1.7后 枚举●case后面的常量不能重复,case后面的常量不能是变量
●switch语句还可以匹配字符串。字符串匹配时,是比较“内容相等”
Scanner sc = new Scanner(System.in); System.out.println("请选择~"); int option = sc.nextInt(); switch (option) { case 1: System.out.println("1v1"); break; case 2: System.out.println("多v多"); break; case 3: System.out.println("退出游戏"); break; default: System.out.println("其他情况"); break; }
二. while 循环
while循环在每次循环开始前,首先判断条件是否成立,如果条件true,就把循环体内的语句执行一遍,如果条件表达式结果为false,那就直接跳到while循环的末尾,继续往下执行。
语法格式:
//while循环 while(条件判断){ 循环体,条件为true执行 } //避免死循环注意事项:
●while循环先判断循环条件是否满足,再执行循环语句
●while循环可能一次都不执行
●编写循环时要注意循环条件,并避免死循环
int num = 1; while (num <= 5) { System.out.println("还想继续考研 第" + num++ + "次"); }
三. do...while 循环
do while循环则是先执行循环,再判断条件,条件满足时继续循环,条件不满足时退出。所以,do while循环会至少循环一次。
语法格式:
do { 执行循环语句 } while (条件表达式);注意事项:
●do while循环先执行循环,再判断条件
●do while循环会至少执行一次
//1到100的累加求和, int sum = 0; int i = 1; do { sum += i++; } while (i <= 100); System.out.println(sum);//5050
区别:
●while() {} 先判断条件是否满足 再去进行循环体内容的执行
●do {} while();先执行循环体内的内容 再判断条件是否满足
一些案例
1.随机城市名称。
●假设有字符串数组,保存若干个城市名称。
●从数组中随机返回一个城市名称
●询问用户是否喜欢?(Y/N),如果输入N后,则继续随机返回;如果直到用户输入Y,程序结束String[] city = {"西安","杭州","上海","大连","北京"}; Scanner sc =new Scanner(System.in); String str;//用来保存用户输入内容 do { //随机一个下标 取出数组中的内容 System.out.print(city[(int)(Math.random()*city.length)]); System.out.println("是否喜欢这个城市?(Y/N)"); //用户输入 str= sc.next(); } while ("N".equalsIgnoreCase(str));//根据判断条件决定循环是否继续
2模拟生成汽车牌照号码。
●汽车牌照号码由字母和数字随机组成,长度为5位
●随机的字母和数字组合,可以通过UUID.randomUUID().toString()产生
●每次产生后,由用户决定是否继续产生?(Y/N),如果输入Y后,则继续生成;如果用户输入N,程序结束Scanner sc = new Scanner(System.in); String str; do { System.out.print(UUID.randomUUID().toString().substring(0, 5)); System.out.println(" 是否喜欢这个车牌号?(Y/N)"); str = sc.next(); } while ("N".equalsIgnoreCase(str));
四. for 循环
for循环的功能非常强大,它使用计数器变量实现循环。for循环会先初始化计数器变量,然后,在每次循环前,通过计数器变量检测循环条件,在每次循环后更新计数器变量。计数器变量通常命名为i。
语法格式:
for( ①初始化变量;②条件判断为true;④步进语句){ ③循环体 } ①:初始化变量 数据类型 变量名=值 ②:条件判断:返回布尔值 ③:循环体:要重复执行的事情 ②的结果为true,执行循环体,为false退出循环 ④:步进语句:改变初始化变量的值 执行顺序:1,2,3,4, 以后的每次:234
注意事项:
●for循环体内只有一条语句的时候,{}可以省略 ----不推荐
for (int i = 0; i < 5; i++) System.out.println("还想继续考研"+i); System.out.println("11111111");
●初始化变量 ,条件判断(默认为true),步进语句均省略
//死循环 for (int i = 0; ;) { System.out.println(i); } for (; ; ) { System.out.println(""); }
1. 操作数组
String[] nameArray = { "张飞", "曹操", "关羽", "刘备", "张辽", "诸葛亮", "颜良", "文丑", "郭嘉" }; // 正序遍历数组 for (int i = 0; i < nameArray.length; i++) { System.out.print(nameArray[i] + " "); } System.out.println(); // 逆序遍历数组 for (int i = nameArray.length-1; i >=0 ; i--) { System.out.print(nameArray[i] + " "); } System.out.println(); // 正序遍历数组前半部分 for (int i = 0; i < nameArray.length/2; i++) { System.out.print(nameArray[i] + " "); } System.out.println(); // 逆序遍历数组后半部分 for (int i = nameArray.length-1; i >=nameArray.length/2 ; i--) { System.out.print(nameArray[i] + " "); }
2. for each
for each循环的变量n不再是计数器,而是直接对应到数组的每个元素。for each循环的写法也更简洁。
语法格式:
for (数据类型 变量名: 数组名) { 执行循环语句 }int[] ns = {1,2,3,4,5,6,7}; String[] nameArray = { "张飞", "曹操", "关羽", "刘备", "张辽", "诸葛亮", "颜良", "文丑", "郭嘉" }; // : 前面,数组的数据类型 变量名 // : 后面,数组名 for (int i : ns) { System.out.print(i); } System.out.println(); for (String str : nameArray) { System.out.print(str); }
3. 嵌套循环
口诀:外层控制行,内层控制列,外层走一次,里面走一圈
for (int i = 0; i < 5; i++) { for (int j = 0; j < 6; j++) { System.out.print("* "); } System.out.println(); }
for (int i = 0; i < 5; i++) { for (int j = 0; j <=i; j++) { System.out.print("* "); } System.out.println(); }
99乘法表
for (int i = 1; i <= 9; i++) { for (int j = 1; j <=i; j++) { // System.out.print(j+"*"+i+"="+(i*j)+" "); System.out.printf("%d*%d=%-2d ",i,j,(i*j)); } System.out.println(); }
五. break和continue
1. break
在循环过程中,可以使用break语句跳出当前循环.结束循环
//break跳出当前循环 --- 一般情况和if配套使用 int sum = 0; for (int i = 0; ; i++) { sum+=i; if (i==10) { break; } } System.out.println(sum);//55
2. continue
continue是提前结束本次循环,直接继续执行下次循环
//continue ---跳出本次循环 执行下一次循环 for (int i = 0; i <=10; i++) { if ((i&1)==1) { continue; } System.out.print(i);//0246810 }
●break和continue关键字,操作的是当前离他最近的循环
●操作外层循环,别名标识 名字: --- 同变量名命名方法
//break和continue关键字,操作的是当前离他最近的循环, //操作外层循环,别名标识 out:for (int i = 0; i < 10; i++) { inner:for (int j = 0; j < 10; j++) { if(j==3) { //break out; continue out; } System.out.print(i+"_"+j+" "); } System.out.println(); }
小结
●break语句可以跳出当前循环
●break语句通常配合if,在满足条件时提前结束整个循环
●break语句总是跳出最近的一层循环
●continue语句可以提前结束本次循环
●continue语句通常配合if,在满足条件时提前结束本次循环




●初始化变量 ,




136





