zoukankan      html  css  js  c++  java
  • Java基本语法--程序流程控制

    流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:顺序结构、分支结构、循环结构。本篇博客主要是对Java基本语法中的程序流程控制进行详细讲解。


    目录:

    ♫♬:JDK1.5提供了foreach循环,方便的遍历集合、数组元素


    顺序结构

    Java中定义成员变量时采用合法的前向引用

    顺序结构

    /*正确方式,在代码块内顺序执行*/
    public class Demo11{
        int number1 = 10;
        int number2 = 12;
        int number3 = number1 + number2;
        System.out.println(number3);
    }
    /*错误
    class Demo2{
    	int num1 = 10;
    	int num3 = num1 + num2;
    	int num2 = 12;
    	System.out.println(num3);
    }
    */
    

    分支结构

    if-else分支语句

    if 语句三种格式:

    if(条件表达式){
        执行代码块;
    }
    
    if(条件表达式){
        执行代码块1;
    }esle{
        执行代码块2;
    }
    
    if(条件表达式1){
    	执行代码块1;
    }else if(条件表达式2){
    	执行代码块2;
    }
    ......
    else{
    	执行代码块n;
    }
    

    if-else使用说明:

    ⚘ 条件表达式必须是布尔表达式(关系表达式或逻辑表达式)、布尔变量

    ⚘ 语句块只有一条执行语句时,一对{}可以省略,但建议保留

    ⚘ if-else语句结构,根据需要可以嵌套使用

    ⚘ 当if-else结构是“多选一”时,最后的else是可选的,根据需要可以省略

    ⚘ 当多个条件是“互斥”关系时,条件判断语句及执行语句间顺序无所谓;当多个条件是“包含”关系时,“小上大下 / 子上父下”

    ✒ 分支结构最终返回的是一个值

    练习:

    判断成绩:
    0<=score<60:不及格;
    60<=score<70:及格;
    70<=score<80:良好;
    80<=score<100:优秀;

    public class scoreDemo {
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		System.out.println("请输入成绩(百分制整数):");
    		int score = sc.nextInt();
    		// 多选一
            if(score >= 0 && score < 60) {
    			System.out.println("成绩不及格");
    		}else if(score >= 60 && score < 70) {
    			System.out.println("成绩及格");
    		}else if(score >= 70 && score < 80) {
    			System.out.println("成绩良好");
    		}else if(score >= 80 && score <= 100) {
    			System.out.println("成绩优秀");
    		}else {
    			System.out.println("请输入正确的百分制分数");
    		}
    		//嵌套使用
    		if(score <= 100){
    			if(score <= 80) {
    				if(score <= 70) {
    					if(score <= 60) {
    						System.out.println("成绩不及格");
    					}else {
    						System.out.println("成绩及格");
    					}
    				}else {
    					System.out.println("成绩良好");
    				}
    			}else {
    				System.out.println("成绩优秀");
    			}
    		}
    	}
    }
    

    switch-case分支语句

    switch-cas结构:

    switch(表达式){
        case 常量1:
            执行语句1
            //breark;
        case 常量2:
            执行语句2
            //breark;
        ......
        case 常量n:
            执行语句n
            //breark;
        default:
            执行语句;
            //break;
    }
    

    switch-case使用说明:

    ⚘ witch(表达式)中表达式的值 必须是下述几种类型之一:byte ,short,char,int,枚举 (jdk 5.0),String (jdk 7.0)

    ⚘ case子句中的值必须是常量,不能是变量名或不确定的表达式值

    ⚘ 同一个switch语句,所有case子句中的常量值互不相同

    ⚘ break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有break,程序会顺序执行到switch结尾,根据实际情况选择加不加

    ⚘ default子句是可任选的。同时,位置也是灵活的。当没有匹配的case时,执行default,相当于if-else中末尾的else

    练习:

    判断成绩:

    public class switchScoreDemo {
        public static void main(String args[]) {
            Scanner sc = new Scanner(System.in);
    		System.out.println("请输入成绩(百分制):");
    		int score = sc.nextInt();
    		switch (score / 10) {
    		case 0:
    		case 1:
    		case 2:
    		case 3:
    		case 4:
    		case 5:
    			System.out.println("成绩不及格");
    			break;
    		case 6:
    			System.out.println("成绩及格");
    			break;
    		case 7:
    			System.out.println("成绩良好");
    			break;
    		case 8:
    		case 9:
    		case 10:
                if(score==100){
                    System.out.println("成绩优秀");
                    break;
                }
    		default:
    			System.out.println("请输入正确的百分制整数");
    			break;
    		}
        }
    }
    

    循环结构

    **循环语句的四个组成部分:**

    ☯ 初始化部分(init_statement)

    ☯ 循环条件部分(test_exp)

    ☯ 循环体部分(body_statement)

    ☯ 迭代部分(alter_statement)


    for循环语句

    for循环语法格式:

    for(➊初始化部分;➋循环条件部分;➍迭代部分){
    	➌循环体部分;
    }
    //执行过程➊-➋-➌-➍-➋-➌-➍-...-条件不满足/break跳出
    

    for循环使用说明:

    ⚘ ②循环条件部分为boolean类型表达式,当值为false时,退出循环

    ⚘ ①初始化部分可以声明多个变量,但必须是同一个类型,用逗号分隔

    ⚘ ④可以有多个变量更新,用逗号分隔

    ⚘ for循环可以进行多重嵌套

    ⚘ 使用break可以跳出循环(for,while,do-while)

    ⚘ ①可以在for循环外定义,④可以在③中定义,但是②循环条件必须在for()中声明,需要注意的是①定义在for()中,其作用域就在for(){}内

    练习:

    1、输出abcbcbc

    2、输出9*9乘法表

    public class forDemo {
    	public static void main(String args[]) {
    		//输出abcbcbc方法一
    		int n = 1;
    		for(System.out.print("a");n<=3;System.out.print('c'),n++) {
    			System.out.print('b');
    		}
    		System.out.println( );
    		
    		//输出abcbcbc方法二
    		int m = 1;
    		System.out.print('a');
    		for(;m<=3;) {
    			m++;
    			System.out.print("bc");
    		}
    		System.out.println("");
    		
    		//9*9乘法表
    		for(int i = 1; i <= 9; i++) {
    			for(int j = 1; j <= i; j++) {
    				System.out.print(i + "*" + j + "=" + (i*j)+"    ");
    			}
    			System.out.println();
    		}
    	}
    }
    

    展示效果:


    while循环语句

    while循环语法格式:

    ➊初始化部分
    while(➋循环条件部分){
    	➌循环体部分;
    	➍迭代部分;
    }
    //执行过程➊-➋-➌-➍-➋-➌-➍-...-条件不满足/break跳出
    

    while循环使用说明:

    ⚘ 注意不要忘记声明④迭代部分。否则,循环将不能结束,变成死循环

    ⚘ for循环和while循环,do...while循环可以相互转换

    练习:

    输出所有的水仙花数,所谓水仙花数是指一个3位数,其各个位上数
    字立方和等于其本身。

    例如: 153 = 1*1*1 + 3*3*3 + 5*5*5

    public class whileDemo {
        public static void main(String args[]) {
            System.out.println("水仙花数:");
    		int i = 100;
    		while(i < 1000) {
    			int hundred = i / 100;
    			int decade = i % 100 /10;
    			int bits = i % 10;
    			int num = hundred * hundred * hundred + decade * decade * decade + bits * bits * bits;
    			if(i == num) {
    				System.out.println(i);
    			}
    			i++;
    		}
        }
    }
    

    do...while循环语句

    ➊初始化部分
    do{
    	➌循环体部分;
    	➍迭代部分;
    }while(➋循环条件部分);
    //执行过程➊-➌-➍-➋-➌-➍-...-条件不满足/break跳出
    

    do...while循环使用说明:

    ⚘ while循环和do...while循环用法一致,不同的是do...while至少执行一次

    练习:

    输出0123456789字符串

    public class doWhileDemo {
        public static void main(String args[]) {
            int i = 0;
            String s = "";
            do{
                s += i;
                i++;
            }while(i <= 9);
        }
    }
    

    其他内容

    无限循环&嵌套的应用

    • “无限循环”

      //格式
      for(;;){
          执行语句;
          //在某种条件下break跳出循环
      }
      while(true){
          执行语句;
          //在某种条件下breaK跳出循环
      }
      do{
          执行语句;
          //在某种条件下break跳出循环
      }while(true);
      

      ⚘ 无限循环存在的原因是并不
      知道循环多少次,需要根据循环体内部某些条件来控制循环的结束


    • 嵌套

      ⚘ 分支语句,循环语句都可以相互嵌套,但是最好不要超过三层

      ⚘ 将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for ,while ,do…while均可以作为外层循环或内层循环。

      ⚘ 实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为false时,才会完全跳出内层循环,才可结束外层的当次循环,开始外层循环的下一次的循环

      ⚘ 设外层循环次数为m次,内层为n次,外层循环执行一次内层循环执行n次,总的内层循环体实际上需要执行m*n次


    break&continue关键字

    • break关键字

    ⚘ break语句用于终止某个语句块的执行

    ⚘ break语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是
    哪一层语句块

    public class Demo {
        public static void main(String args[]) {
    		//9*9乘法表
    		for(int i = 1; i <= 9; i++){
    			for(int j = 1; j <= i; j++){
    				System.out.print(i + "*" + j + "=" + (i*j)+"    ");
    			}
    			System.out.println();
    		}
            // 当i=6时直接break
            System.out.println("直接break");
            for(int i = 1; i <= 9; i++){
    			for(int j = 1; j <= i; j++){
                    if(j == 6) {
    					break;
    				}
    				System.out.print(i + "*" + j + "=" + (i*j)+"    ");
    			}
    			System.out.println();
    		}
            
            System.out.println("break la2");
            System.out.println("break la2");
            la1: for(int i = 1; i <= 9; i++){
            	 la2:for(int j = 1; j <= i; j++){
    				if(j == 6) {
    					break la2;
    				}
    				System.out.print(i + "*" + j + "=" + (i*j)+"    ");
    			}
    			System.out.println();
    		}
            
            System.out.println("break la1");
            la1: for(int i = 1; i <= 9; i++) {
            	la2: for(int j = 1; j <= i; j++){
    					if(j == 6) {
    						break la1;
    					}
    					System.out.print(i + "*" + j + "=" + (i*j)+"    ");
    			}
    			System.out.println();
    		}  
            
            System.out.println();
            System.out.println("continue la2");
            la1: for(int i = 1; i <= 9; i++) {
            	la2: for(int j = 1; j <= i; j++){
    					if(j == 6) {
    						continue la2;
    					}
    					System.out.print(i + "*" + j + "=" + (i*j)+"    ");
    			}
    			System.out.println();
    		}   
        }
    }
    

    展示效果:

    • continue关键字

    ⚘ continue只能使用在循环结构中

    ⚘ continue语句用于跳过其所在循环语句块的一 一 次执行,继续下一次循环

    ⚘ continue语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环,同break的用法类型


    附加说明

    ⚘ eturn:并非专门用于结束循环的,它的功能是结束一个方法。当一个方法执行到一个return语句时,这个方法将被结束

    ⚘ 与break和continue不同的是,return直接结束整个方法,不管这个return处于多少层循环之内

    ⚘ break只能用于switch语句和循环语句中

    ⚘ continue 只能用于循环语句中

    ⚘ break和continue二者功能类似,但continue是终止本次循环,break是终止本层循环

    ⚘ break、continue之后不能有其他的语句,因为程序永远不会执行其后的语句

    ⚘ 标号语句必须紧接在循环的头部。标号语句不能用在非循环语句的前面

    ⚘ 很多语言都有goto语句,goto语句可以随意将控制转移到程序中的任意一条
    语句上,然后执行它。但使程序容易出错。Java中的break和continue是不同于goto的


    本博客与CSDN博客༺ཌ༈君☠纤༈ད༻同步发布

  • 相关阅读:
    用graphviz,pygraphviz快速自动绘图
    python 实现的huffman 编码压缩,解码解压缩
    python 字符串的显示
    PKU acm 1651 multiplication puzzle
    SQL Server中的数据类型详解
    (转) treeview 的设计思路
    将英文的week 转换为中文的 简单的方法
    常用的文件对应的MIME类型:
    客户端传参问题
    绑定数据与截取的另外的一中写法
  • 原文地址:https://www.cnblogs.com/asio/p/12285964.html
Copyright © 2011-2022 走看看