分支和循环
</ hr>
1.分支结构
1.1 if 结构
if (/* 判断语句 true false */) { // 语句体 } /* 执行流程: 当程序运行到if结构时,首先判断if之后的小括号里边的判断语句是否为true,如果为true,执行语句体,如果为false,执行大括号以外的内容。 */
1.2 if - else 结构
if (/* 判断语句 true false */) { // true语句体 } else { // false语句体 } /* 执行流程: 当程序运行到if - else结构时,首先判断if之后的小括号里边的判断语句结果是什么,如果为true,执行true语句体,如果为false,执行false语句体。 世界上最遥远的距离是你在if里我在else里 */
1.3 if - else if 结构
if (/* 条件匹配 1 */) { // 处理方式1 } else if (/* 条件匹配 2 */) { // 处理方式2 } else if (/* 条件匹配 3 */) { // 处理方式3 } else { // 没有任何匹配情况下的最终处理方式 } /* 执行流程: 当程序运行到if - else if结构时,匹配if之后的条件,执行对应的处理方式,如果没有任何一个条件匹配,执行else里边的处理方式 学生成绩: 90 ~ 100 优秀 80 ~ 90 良好 70 ~ 80 中等 60 ~ 70 及格 60以下 不及格 if (score >= 90) { System.out.println("你的成绩等级为:优秀"); } else if (score >= 80) { System.out.println("你的成绩等级为:良好"); } else if (score >= 70) { System.out.println("你的成绩等级为:中等"); } else if (score >= 60) { System.out.println("你的成绩等级为:及格"); } else { System.out.println("你的成绩等级为:不及格"); } */
1.4 switch - case
switch (/* 条件匹配 */) { case /* 常量1 */: /* 处理方式1 */ break; case /* 常量2 */: /* 处理方式2 */ break; case /* 常量3 */: /* 处理方式3 */ break; default: /* 最终处理方式 */ break; } /* 执行流程: 当程序运行到switch - case 结构,使用switch之后小括号中的变量,匹配case之后的【常量】,找到对应的数据,按照对应的处理方式进行,如果没有任何一个条件匹配,执行default里边的处理方式 注意事项; 1. case 选择不能出现重复内容 2. break可以省略,代码会继续执行到下一个break或者switch - case 大括号 3. default可以省略,如果不需要可以不写default结构 */
2.循环结构
2.1为什么使用循环
在代码中,出现了大量的重复功能,使用CV大法可以解决,但是会导致以下问题: 1. 代码过于臃肿!!! 2. 代码阅读性极差!!! 3. 代码的维护性极差!!!
2.2 while 循环
while (/* 循环条件判断 */) { // 循环体 // (循环条件变更) } /* 执行流程; 代码执行到while循环结构时,首先判断while之后的循环条件是否为true,如果为true执行循环体(带有循环条件变更),知道while之后的条件为false,终止循环!! 在DOS窗口中终止循环的方式 Ctrl + C */
2.3 do - while 循环
do { // 循环体 // 循环条件变更 } while (/* 循环条件判断 */); /* 执行流程; 代码执行到do-while循环结构时,首先执行循环体(循环变更条件),再来判断while 之后的循环条件,如果循环条件为true,继续循环,直到条件为false,终止循环!!! */
2.4 while和do - while
while循环执行每一次循环体,都是在循环条件下执行的,而 do - while 第一次执行循环体,是没有任何的约束的。 所以,如果在开发中可以使用也可以使用do-while时,建议尽量使用while循环
2.5 for循环
for (/*循环初始化条件*/;/*循环条件判断*/;/*循环条件变更*/) { // 循环体 }
for循环使用案例 import java.util.Scanner; class Demo6{ public static void main(String[] args){ // 1. 展示100以内的所有偶数 /* 1. 循环执行多少次? 101 2. 判断执行多少次? 101 */ for (int i = 0; i <= 100; i++) { if (i % 2 == 0) { System.out.println(i); } } /* 1. 循环执行多少次? 51 节约了75% */ for (int j = 0; j <= 100; j += 2) { System.out.println(j); } // 2. 逢7过!!! /* 7的倍数 num % 7 == 0 带7的数 个位是7 17 ÷ 10 = 1 ... 7 num % 10 == 7 十位是7 70 / 10 = 7 num / 10 = 7 */ for (int sun = 0; num <= 100; num++) { if (num % 7 == 0 || num % 10 == 7 || num /10 = 7){ System.out.println("过"); } else { System.out.println(sum); } } /* 3. 例如: 输入 5 8 计算 5 + 6 + 7 + 8 输出 26 */ int sum = 0; int num1 = 0; int num2 = 0; Sanner sc = new Scanner(System.in); System.out.println("请输入两个整数"); num1 = sc.nextInt(); num2 = sc.nextInt(); //判断用户输入的数据到底是哪一个数值大,使用交换保证num2的值是大于num1的值 if (num1 > num2) { int temp = num1; num1 = num2; num2 = temp; } for (int i = num1; i <= num2; i++) { sum + = i; } } }
【补充知识点】
Scanner的使用
代码中需要用户修改数据,从而满足其他需求,但是我们不能要求用户修改代码,重新编译,重新执行!需要在代码中提供一个让用户输入数据的方式: 1. 点技能点!!!【导包】 在class之前 import java.util.Scanner; 2. 创建一个Scannner的“变量” Scanner sc = new Scanner(System.in); 3. 使用Scanner扫描器中的一些方法,从键盘上获取用户输入的数据 获取int类型数据 int num = sc.nextInt(); 获取float类型数据 float num = sc.nextFloat(); 获取double类型数据 double num = sc.nextDouble(); 获取char类型数据 char num = sc.nextLine().charAt(0);
用户友好型考虑
提示用户属兔数据,提供用户下一步应该做什么事情!!!
用户输入数据的合法性判断
程序的运行需要正确的数据,如果用户输入的数据时不合法,我们需要告知用户,重新输入!! 使用 if 语句
来源:https://www.cnblogs.com/zhuangyunliang/p/12324224.html