程序流程分类

1)顺序执行:从上到下,从左到右(所有的代码都执行)
2)分支判断执行:根据条件进行判断,条件成立执行一段代码,条件不成立执行另外一段代码(部分代码执行,部分代码不执行)
3)循环迭代执行:反复执行一段代码(代码执行多次)

分支

java提供两种语句:if语句(单分支)、switch语句(多分支)
if语句:
1)if(判断条件:布尔表达式){ 。。。}
2)if(){ … } else{ … }
3)elseif if(){ … } elseif(){ … } elseif(){ … } else{ … } 多分支

package test;import org.junit.Test;//if语句的测试
public class TestIf {// Boolean isRainning = true; 成员变量@Testpublic void rainning() {// 需求:下雨打伞// 如果是成员变量使用包装类型,// 如果是局部变量使用基本类型boolean isRainning = false;if (isRainning) {System.out.println("下雨打伞");}// 简写,只有当if语句后面只有一条语句是,才能省略大括号// 不推荐,结构不清晰,号称会出错if (isRainning)System.out.println("下雨打伞");System.out.println("执行完成");//开发中最常见写法if (isRainning) {System.out.println("喜水");}else {System.out.println("晒被子");}}//需求:判断电话号码,输出功能@Testpublic void elseIf() {int phone = 999;if(phone==110) {System.out.println("警察");}else if(phone==120) {System.out.println("医生");}else if(phone==119) {System.out.println("消防");}else {System.out.println("非法电话号码");}}
}

switch 语句:
int n = 10; //整数
switch( n){
case 10:

case 20:

case 30:

default :

}

package test;import org.junit.Test;public class TestSwitch {@Testpublic void phone() {//当switch只要某个条件成立,下面所以的条件不判断,但是代码会执行//标准写法,给每个分支最后加语句 break; 跳出int phone = 120;switch(phone) {case 110: //判断phone==110System.out.println("警察");break;case 120:System.out.println("医生");break;case 119:System.out.println("消防");break;default:System.out.println("非法电话号码");break; //写不写都行}}
}

ATM

package test;//必须选择java.util(工具类)
import java.util.Scanner;import org.junit.Test;/** 需求:ATM输入数字操作* 1 取钱* 2 存钱* 3 余额* 4 退出 */
public class TestATM {@Testpublic void atm() {//键盘输入数字System.out.println("请您输入一个数字:");Scanner scan = new Scanner(System.in);//自动将输入的内容转换整数类型//阻塞,等待用户输入,用户没有输入时就死等//回车继续执行下面语句int num = scan.nextInt(); System.out.println("键盘输入:"+num);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;}}
}

循环

1)while 循环
2)do-while 循环
3)do 循环

package test;import org.junit.Test;//循环三种方式
public class TestLoop {@Test   //while循环public void whileLoop() {//需求:打印0~9int n = 0;//当下面的判断成立就执行循环体,如果不成立结束循环while(n<10) {     System.out.println(n);n++;}}@Test //do while循环public void doLoop() {int n = 0;do {System.out.println(n);n++;}while(n<10);}@Test   //for循环public void for1() {for(int i=0;    //第一句,只执行一次i<10;      //第二句,判断条件,每次都判断i++) {      //第四句,加一System.out.println(i); //第三句,打印}}@Test   //双重for循环 i,j,k,m,npublic void for2() {//利用*打印方框for(int j=0; j<10; j++) { //外层循环for(int i=0; i<10; i++) { //内层循环System.out.print("*");}System.out.println(); //换行}}@Test //99乘法表public void for99() {for(int j=1; j<10; j++) {for(int i=1; i<j+1; i++) {System.out.print(i+"*"+j+"="+i*j+"\t"); //tab}System.out.println();}}
}

死循环

一直循环无法退出

package test;import org.junit.Test;//死循环
public class TestDeadLoop {@Testpublic void whileDead() {while(true) {System.out.println("*");}}@Testpublic void forDead() {for(;;) {System.out.println("*");}}
}

退出循环

1)break 跳出
2)continue 跳过本次循环
3)return 返回

package test;import org.junit.Test;//退出循环
public class TestExit {@Testpublic void exitLoop() {int i = 0;while(i<6) {i++;if(i==3) {//break;   //跳出循环//continue; //跳过本次循环return;       //方法结束}System.out.println(i);}System.out.println("执行完成");}
}

package test;//必须选择java.util(工具类)
import java.util.Scanner;import org.junit.Test;/** 需求:ATM输入数字操作* 1 取钱* 2 存钱* 3 余额* 4 退出 return */
public class TestATM {@Testpublic void atm() {//键盘输入数字Scanner scan = new Scanner(System.in);//自动将输入的内容转换整数类型//阻塞,等待用户输入,用户没有输入时就死等//回车继续执行下面语句while(true) {System.out.println("请您输入一个数字:");int num = scan.nextInt(); System.out.println("键盘输入:"+num);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;return;}}}
}

异常

try试图/catch捕获异常/finally释放资源/
throw抛出异常/throws 接收异常

package test;import org.junit.Test;//异常处理,3个经典的错误
public class TestTryCatch {@Testpublic void tryCatch() {//1. nullPointer异常String s = null;//System.out.println(s.length());//2. zero被0除异常 n/0//System.out.println(10/0);//java.lang.ArithmeticException: / by zero//3. 数组越界 arr[5]int[] arr = new int[5];System.out.println(arr[5]);//java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5}
}
package test;import java.util.Scanner;import org.junit.Test;//异常处理,3个经典的错误
public class TestTryCatch {@Testpublic void err() {//1. nullPointer异常String s = null;//System.out.println(s.length());//2. zero被0除异常 n/0//System.out.println(10/0);//java.lang.ArithmeticException: / by zero//3. 数组越界 arr[5]int[] arr = new int[5];System.out.println(arr[5]);//java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5}@Test //对于可能出现的错误就需要使用try-catch包裹起来public void tryCatch() {//如果try中没有出错,不执行catch中内容try {int[] arr = {1,2,3,4,5};System.out.println(arr[6]);}catch(Exception e) {  //把出现错误信息存入到e对象实例中System.out.println( e.getMessage());//错误信息比上面的详细些System.out.println( e.toString() );e.printStackTrace(); //最详细的错误信息,一般没必要}}@Test  //finally不管是否出错,都释放资源public void tryCatchFinally() {//打印键盘输入内容(默认字符串)Scanner scan = new Scanner(System.in);//Resource leak: 'scan' is never closed 对复杂变量关闭try {int num = scan.nextInt();   //不是整数"a"System.out.println(num);}catch(Exception ex) {System.out.println( ex.toString() );}finally {//不管正确还是错误,这里的代码都会执行System.out.println("执行了我");scan.close();    }}@Test //自己定义新的异常,并且抛出throw,方法接收异常throwspublic void throwEx() throws Exception{try {int i = 10/0; //抛出异常}catch(Exception e) {System.out.println(e.toString());//创建自己的异常,可以重新定义异常信息throw new Exception("分母不能为0异常。");}}
}

小结

1)流程控制结构:
a. 顺序结构:从上到下,从左到右
b. 分支判断结构:部分代码执行,部分代码不执行 if/else
c. 循环迭代结构:反复执行一段代码
d. 异常结构:出错就跳过后面代码直接执行catch中的代码,都会执行finally中代码
2)分支(单分支、多分支,分支的条件是互斥的,没有交叉,只会执行其中某一个)
用来判断,它让我们程序有了生命力!程序的业务逻辑。
3)循环(往复执行一件事情)
注意,在循环体内一定要改变判断条件!死循环
while和do区别:while可能一次都不执行,do最少执行一次
for(第一句;第二句;第四句){第三句} 编译器优化
4)异常 Exception
try-catch
try-catch-finally 释放资源 Person p = new Person(); GC垃圾回收器(自动,它不受java开发者控制)
throw-throws,在catch中抛出异常throw产生新的异常,方法后面throws

java小白训练营day04-流程控制:分支+循环+异常相关推荐

  1. 四 【java基础】 程序流程控制- 分支结构

    目录 01 程序流程控制概述 02 顺序结构 03 分支结构 3.1 if-else 结构 3.2 从键盘输入数据(Scanner) 3.2 Switch-case结构 01 程序流程控制概述 流程控 ...

  2. scala(三):流程控制-分支控制、嵌套循环、for、while、do…while循环、循环中断、多支循环

    目录 流程控制 分支控制 嵌套分支 for循环控制 while和do-while循环控制 循环中断 多重循环 流程控制 分支控制 分支控制可以使程序有选择的执行,分支类型有:单分支.双分支.多分支 单 ...

  3. 【 js基础 Day2】js的流程控制:分支语句,循环.顺序结构

    复习 JavaScript简称为JS JavaScript是什么? 是一门脚本语言:不需要编译,直接运行 是一门解释性的语言:遇到一样代码就解释一行代码 C#语言是一门面向对象的语言,也是编译语言,是 ...

  4. java个十百千万位余数_1 Java第三课[流程控制]

    1 Java第三课[流程控制] 1.1 回顾: 1. 标识符的命名:标识符通常意义上是指 类名,包名,方法名,属性名,普通变量等等. 2. 类命名:每个单词的首字母大写; 3. 变量命名规则:字母数字 ...

  5. Java基础篇3——流程控制

    Java基础篇3--流程控制 1.顺序结构 正常代码的流程即是顺序流程 2.分支结构 2.1.if-else分支 if(条件表达式) {语句块1; } if(条件表达式) {语句块1; } else ...

  6. 小汤学编程之JavaScript学习day02——运算符、流程控制与循环、函数

    一.运算符 1.算术运算符     2.一元运算符     3.关系运算符     4.逻辑运算符     5.赋值运算符     6.运算符的优先级 二.流程控制与循环 1.顺序结构     2.分 ...

  7. python语言流程控制语句的格式while循环_Python流程控制-while循环-for循环

    写重复代码 是可耻的行为 -------------- 完美的分割线  -------------- 程序在一般情况下是按顺序执行的,编程语言提供了各种控制结构,允许更复杂的执行路径. 循环(loop ...

  8. JavaScript 04 流程控制(循环)

    目录 流程控制(循环)思维导图 1 - 流程控制 1.1 流程控制概念 1.2 顺序流程控制 1.3 分支流程控制 1.4 三元表达式 1.5 switch分支流程控制 附上流程控制思维导图: 2 - ...

  9. shell脚本编程学习笔记8(XDL)——流程控制和循环

    shell脚本编程学习笔记8--流程控制和循环 1,if语句 1,框架 1,单分支:if [条件判断式] ;thenprogramfiif [条件判断式]thenprogramfi注意:if语句使用f ...

最新文章

  1. CCIE-MPLS基础篇-实验手册
  2. 多视图关联选择的例子
  3. 阿里云服务器怎么安装docker
  4. 你心动了吗?2014年iOS应用开发者收入超好莱坞美国票房
  5. 均值滤波、中值滤波、混合中值滤波C++源码实例
  6. 解决使用sudo没问题,但是使用su会报错 su: Authentication failure 的问题
  7. Kernel panic - not syncing:Attempted to kill...
  8. c++ 编译代码时Link失败,无法关闭目标文件
  9. Android 打造万能网络解析框架
  10. 火星坐标系解密-iDesktopX空间数据处理
  11. matlab快速原型开发c语言,快速原型开发
  12. 移动端调用微信和支付宝的扫一扫功能
  13. 计算机电子贺卡制作圣诞节,圣诞电子贺卡_圣诞节英文电子贺卡怎么制作
  14. win10桌面管理文件收纳_【电脑桌面文件收纳】电脑桌面软件怎么收纳_电脑桌面文件加密...
  15. 【FPGA学习笔记】VHDL语言(五)语言风格描述:行为描述,数据流描述,结构化描述
  16. 细粒度的、安全高效的基于区块链数据溯源系统 Fine Grained, Secure and Efficient Data Provenance on Blockchain Systems(一)
  17. 受益匪浅!Spring事务是如何传播的附架构师必备技术详解
  18. Python语法之精妙的十个知识点(装B语法)
  19. python取反函数_编程语言取反函数
  20. 服务器U盘安装虚拟化,用Proxmox ISO镜像制作引导U盘

热门文章

  1. 各种深度学习框架实现猫狗大战
  2. Java 字节数组流
  3. SQL Server数据库分离与附加
  4. linux 降低gcc版本,如何降低自己的gcc版本
  5. 在Java程序中创建和转换PDF文件
  6. Vue form-create的基本使用 和 自定义表单组件的数据通迅
  7. 分布式数据库技术论坛回顾
  8. Windows使用uncompyle6
  9. java 语言 读书心得_深海夜未眠 小说java夜未眠读书心得
  10. RabbitMQ集群之shovel插件的使用