南哥带你玩转 Java 之 Java 流程控制
2017-12-29 17:57
197 查看
Java 流程控制
顺序结构
没有流程控制默认是从上到下执行 相当于代码按顺序从上向下依次执行
分支结构
if 语句
if 语句三种书写格式: 格式一: if(判断条件){ 执行体 执行语句1, ... 执行语句 n; } 如果判断条件成立就执行执行体( if 后面那对大括号中的语句) 格式二: if(判断条件){ 执行体1 } else{ 执行体2 } 如果判断条件成立就执行执行体1( if 后面那对大括号中的语句) 反之执行执行体2( else 后面那对大括号中的语句) 格式三: if(判断条件1){ 执行体1 } else if(判断条件2){ 执行体2 } else{ 执行体3 } 如果判断条件都不成立,就去执行 else 中的语句 注意:根据具体情况具体分析 例1: // 输入成绩,判断等级 // 91-100优秀 71-90良好 61-70合格 60以下不合格 Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); if(n > 90 && n <= 100) { System.out.println("优秀"); } else if(n > 70 && n <= 90) { System.out.println("良好"); } else if(n > 60 && n <= 70) { System.out.println("合格"); } else if(n > 0 && n <= 60){ System.out.println("不合格"); } else { System.out.println("非法成绩!"); } 例2: // 偶数不是7的倍数 if(n % 2 == 0 && n % 7 != 0) { System.out.println(n); } 例3: // 判断闰年 if(n % 400 == 0 || (n % 4 == 0 && n % 100 != 0)) { System.out.println("闰年"); } else { System.out.println("平年"); }
if 的嵌套
例如: // 如果晴天,去爬山,如果下雨,去逛街,小雨的话,带上伞, // 暴雨的话,穿上雨衣 键盘输入模拟天气 // 如果输入的 下雨的话 还需要提示用户 输入 是小雨 或 暴雨 System.out.println("请输入天气情况(晴天/下雨):"); Scanner scanner = new Scanner(System.in); String string = scanner.nextLine(); if(string.equals("晴天")) { System.out.println("去爬山~"); }else if(string.equals("下雨")) { System.out.println("去逛街~"); System.out.println("请输入小雨或者暴雨:"); string = scanner.nextLine(); if(string.equals("小雨")) { System.out.println("带上伞!"); } else if (string.equals("暴雨")) { System.out.println("穿上雨衣!"); } } else { System.out.println("输入错误!"); } scanner.close();
switch 语句
switch的结构: switch (值 key) { case value1: 语句体1 break; case value2: 语句体2 break; 可以有无数个case 根据具体情况分析 default: 语句体3 break; } switch的执行 用key(值)和value1进行匹配,匹配上就执行语句体1 没匹配上就继续向下匹配value2,匹配上就执行语句体2 如果都没匹配上,就执行default后面的语句体3 例如: // 输入一个数 如果是1 打印 春天 2 —> 夏天 3 —> 秋天 4 —> 冬天 System.out.println("请输入一个数:"); Scanner scanner = new Scanner(System.in); // 接收这个数 int num = scanner.nextInt(); // 使用switch语句 switch (num) { case 1: System.out.println("春天"); break; case 2: System.out.println("夏天"); break; case 3: System.out.println("秋天"); break; case 4: System.out.println("冬天"); break; // 当所有的case都没有匹配上,系统就会寻找当前switch语句中有无default,有就执行,没有就算了 default: System.out.println("呵呵"); break;// 跳出switch语句 } scanner.close(); 思考:什么时候用switch,什么时候用if? 如果判断是一个区间使用if比较方便 如果是简单的几个数使用switch比较方便
循环结构
while 循环
① while(判断条件){ ② 循环体 } 如果判断条件成立就执行循环体 反之不成立就不执行 执行顺序: ① -> ② -> ①(再去看条件是否成立) -> ② -> ①(如果不成立循环结束) while 死循环: //使用while写死循环,打印我是死循环 while (true) { System.out.println("死循环"); } 例1: // 打印十遍睡觉 // 定义一个变量记录打印次数 int num = 0; while (num < 10) { System.out.println("睡觉"); // 改变num值 num++;// 循环增量 } 例2: // 打印1-100的数 // 声明循环增量 int number = 1; // while 循环 while(number <= 100) { // 打印1-100 System.out.println(number); // 增量++ number++; } 例2: // 计算 1 + 2 + 3 + 4 + 5 + ... + 10 计算和 // 累加思想 利用思想取解决相同类型问题 举一反三的能力 // 循环增量 int number = 0; // 声明一个变量来保存和 int sum = 0; // 循环 while (number < 11) { // 可以拿到1-10这些数 sum = sum + number; // 增量++ number++; } // 打印和 System.out.println(sum); 例3: // 银行定期存款 5年及以上利率7.5% 否则利率 4.5% // 10年 本金为10000 计算本金加利息 // 本金 double money = 10000; // 年份 int year = 1; while(year < 11) { // 计算本金加利息 money = money + (money * 0.075); year++; } System.out.println(money);
do…while 循环
do...while 循环 1.写法 do{ ① 循环体 } while(循环判断条件); ② 执行规则: 先执行循环体中的内容(不管循环条件成立与否,都会先执行循环体的内容) 再去看循环条件,满足就执行循环体,依次循环 当循环条件不成立时循环结束 2.明确执行顺序 ① -> ② -> ① -> ② 例1: // 打印10次睡觉 // 注意:循环增量写在 do 的外面,否则,判断时访问不到 int i = 0; do { System.out.println("睡觉"); i++; } while (i < 10); 例2: // 从周一开始打印 并询问明天上班不 输入上班 继续打印 // 输入不上班 停止程序 // 定义数组:"一","二","三","四","五","六","日" String week[] = {"一","二","三","四","五","六","日"}; // 循环增量 int day = 0; // 创建了一个扫描对象 用来接收从键盘输入的内容 Scanner scanner = new Scanner(System.in); // 声明一个空字符串 String str = ""; do { // 当 day 等于7时重新回0 if(day == 7) { day = 0; } System.out.println("今天星期" + week[day] + ",明天上班吗?(上班/不上班)"); // 循环接收上班/不上班 str = scanner.nextLine(); // 增量++ day++; if (str.equals("不上班")) { System.out.println("今天星期" + week[day] + ", 不上班!开心吗?"); } } while (str.equals("上班")); // 关闭 scanner scanner.close();
for 循环
1.写法: for(表达式;判断条件;表达式){ 循环体 } 2.执行顺序: 打印10遍睡觉 // ① ② ③ for(int i = 0; i < 10; i++) { ④ System.out.println("睡觉"); } 执行顺序: ① -> ② -> ④ -> ③ -> ② -> ④ -> ③ 当判断条件不成立时,结束循环 注意:循环的执行顺序 for 循环的死循环: for (;;) { System.out.println("死循环"); } 例1: // 计算 1-10的和 // 这里定义的循环增量 i 访问范围只在 for 循环的大括号中使用 // 声明变量和 int sum = 0; for(int i = 0; i < 11; i++) { // 累加 sum = sum + i; } System.out.println(sum); 例2: // 使用for循环 从1-1000 中 是2的倍数 并且不是10的倍数 的个数 打印个数 // 计数器思想:需要一个变量来记录次数 // 声明记住次数的变量 int sum = 0; for(int i = 1; i < 1001; i++) { // 找出是2的倍数,并且不是10的倍数的数 if (i % 2 == 0 && i % 10 != 0) { // 增量++ sum++; } } // 打印结果 System.out.println(sum);
for 循环的嵌套
执行顺序: ① -> ② -> ④ -> ⑤ -> ⑦ -> ⑥ -> ⑤ -> ⑦ -> ⑥ -> ... ⑧ -> ③ -> ② -> ④ -> ⑤ -> ⑦ -> ⑥ -> ⑤ -> ⑦ -> ⑥ -> ... ① ② ③ for (int i = 0; i < 10; i++) { ④ ⑤ ⑥ for (int j = 0; j < 10; j++) { ⑦ System.out.println("睡觉"); } ⑧ System.out.println("醒了"); } ⑨ System.out.println("困"); 例1: // 打印下列图形 使用for循环的嵌套 *** *** *** *** // 规律: // 外循环控制行数 // 内循环控制每一行有几个元素 for (int i = 0; i < 4; i++) { for (int j = 0; j < 3; j++) { System.out.print("*"); } System.out.println(); } 例2: // 打印下列图形 ***** **** *** ** * // 规律:修改内循环 循环增量的初值 for (int i = 0; i < 5; i++) { for (int j = i; j < 5; j++) { System.out.print("*"); } System.out.println(); } 例3: // 打印下列图形 * ** *** **** ***** for (int i = 0; i < 5; i++) { for (int j = 0; j < i + 1; j++) { System.out.print("*"); } System.out.println(); } 例4: // 打印 1 12 123 1234 12345 for (int i = 1; i < 6; i++) { for (int j = 1; j < i + 1; j++) { System.out.print(j); } System.out.println(); } 例5: // 打印99乘法表 // 1*1=1 // 1*2=2 2*2=4 // 1*3=3 2*3=6 3*3=9 // 1*4=4 2*4=8 3*4=12 4*4=16 for (int i = 1; i < 10; i++) { for (int j = 1; j < i + 1; j++) { System.out.print(j + "*" + i + "=" + i * j + "\t"); //\t:水平制表符,使用水平制表符可以可以使文字内容在规整的位置显示或输出而看起来清晰整齐。 } System.out.println(); } 例6: // -----* // ----* * // ---* * * // --* * * * // -* * * * * // 在什么位置(内循环/外循环)进行拼接 for (int i = 0; i < 5; i++) { for (int j = i; j < 5; j++) { System.out.print("-"); } // 拼接位置 for (int k = 0; k < i + 1; k++) { System.out.print("* "); } System.out.println(); }
break 在循环当中的作用
for (int i = 0; i < 10; i++) { if (i == 8) { // 跳出循环(结束循环) // 注意: break 后面不要写代码永远不会被执行 break; } System.out.println(i); } System.out.println("循环外"); 例如: // 打印[0, 100]中是7的倍数中的值最大那个数(两种方法 break) // 第一种: int max = 0; for (int i = 0; i < 101; i++) { if(i % 7 == 0) { max = i; } } System.out.println(max); // 第二种: // 使用 break 可以倒着打印 进到循环中的第一个数就是最大值 for (int i = 100; i > -1; i--) { // 判断是否是7的倍数 if(i % 7 == 0) { // 进来的第一个数就是最大值 System.out.println(i); // 停止循环 break; } } // 死循环时, break 可以当做出口 int num = 0; while (true) { if (num == 5) { //写个出口,结束死循环 break; } num++; System.out.println(num); }
continue 在循环中的作用
// 测试一下 continue 的作用 for (int i = 0; i < 10; i++) { if (i == 5) { // 结束本次循环,继续下一次循环 continue; } System.out.println(i); } 例子: // 班级12个人 跟每个人打招呼 讨厌的人不打招呼 // 我分别讨厌 3号 5号 9号 // 先完成需求,再考虑代码优化 for (int i = 1; i < 13; i++) { if (i == 3 || i == 5 || i == 9) { System.out.println(i + "号不打招呼"); continue; } System.out.println(i + "号,你好!"); }
for 循环嵌套中 continue 和 break 的作用
嵌套中: break 结束了本层的循环 continue 跳出这一次的本层循环,继续下一次的本层循环(不会影响到外层循环) w: for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if (j == 6) { // 如果想在 j 中结束外层循环,给外层循环取个名字 // 在本层中直接写 break w; 即可结束(一般不会用到) // 同理可以应用到 continue 中 break; } System.out.print(j + " "); } if (i == 6) { break; } System.out.println(i + " "); } 例子: // 打印0-9中除2,4,6的数 for (int i = 0; i < 10; i++) { for (int j = 10; j < 20; j++) { if (j == 2 || j == 4 || j == 6) { continue; } System.out.println(j); } if(i == 2 || i == 4 || i == 6) { continue; } System.out.println(i); }
http://blog.csdn.net/huzongnan/article/list
相关文章推荐
- JAVA概述(9) 循环语句(流程控制)(细节3)
- Java基础知识:流程控制
- java中的流程控制
- java--流程控制
- 浪潮优派培训java笔记:第4章 流程控制
- 重拾java基础(四):流程控制总结下
- Java控制流程
- 黑马程序员——java基础语法之控制流程语句
- java基础七 流程控制
- 从零开始学习Java——基础知识之流程控制(第三天)
- java学习二:流程控制
- Java学习-流程控制
- [Java编程思想-学习笔记]第4章 控制执行流程
- 【慕课笔记】第四章 流程控制语句 第2节 JAVA条件语句之if...else...
- 【慕课笔记】第四章 流程控制语句 第5节 JAVA条件语句之switch
- 【慕课笔记】第四章 流程控制语句 第11节 JAVA循环语句之多重循环
- Java核心技术学习笔记之三——Java中的控制流程for循环while循环
- Java笔记整理:控制执行流程
- 【疯狂Java_突破程序员基本功的16课】charpt6 流程控制的陷阱
- [Java基础] 流程控制