zoukankan      html  css  js  c++  java
  • Java程序员入门必会的基础控制结构

    原文链接:程序控制结构

    程序控制结构

    程序之所以能够按照人们的意愿执行,主要依靠的就是程序的控制结果。本章重点介绍选择与循环结构语句,学习如何利用这些不同的结构编写出有趣的程序,让程序的编写更灵活,操控更方便。

    结构化程序设计语言,强调用模块化、积木式来建立程序。采用结构化程序设计方法,可使程序的逻辑结构清晰、层次分明、可读性好、可靠性强,从而提高了程序的开发效率,保证了程序质量,改善了程序的可靠性。

    一般来说程序的结构包含以下3种。

    1. 顺序结构
    2. 选择结构
    3. 循环结构

    顺序结构

    结构化程序的最简单的结构就是顺序结构,所谓顺序结构程序就是按书写顺序执行的语句构成的程序段。如下程序会先执行第一条语句,然后执行第二条语句,再执行第三条语句。

    package cn.coder306;
    
    public class Main {
    	public static void main(String[] args) {
    		int d = -1;  // 第一条语句
    		System.out.println(Integer.MAX_VALUE); // 第二条语句
    		System.out.println(d >>> 1); // 第三条语句
    	}
    }
    

    常情况下,程序的语句按顺序一句一句地执行,构成了顺序结构。有一些程序并不按顺序执行语句,这个过程称为“控制的转移”,它涉及了另外两类程序的控制结构,即分支结构和循环结构。

    选择结构(条件语句-if...else)

    选择结构也称为分支结构,在许多实际问题的程序设计中,根据输入数据和中间结果的不同情况需要选择不同的语句组执行,在这种情况下,必须根据某个变量或表达式的值作出判断,以决定执行哪些语句和跳过哪些语句不执行。选择结构也可称为条件语句。

    如下程序,实现一个音量判断的功能,如果音量值小于10,打印出“音量太小”,如果音量值等于10,打印出“音量适合”,如果音量值大于10,打印出“音量太大”。

    package cn.coder306;
    
    public class Main {
    	public static void main(String[] args) {
    		volumeControl(10);
    	}
    	
    	// 音量控制器
    	public static void volumeControl(int i) {
    		if(i < 10) {
    			System.out.println("音量太小");
    		} else if(i == 10){
    			System.out.println("音量适合");
    		} else {
    			System.out.println("音量太大");
    		}
    	}
    }
    

    选择结构主要有以下几种:

    • if 判断
    • if...else...
    • if...else if...else...
    • switch case

    if语句

    语法:

    if(布尔表达式)
    {
       //如果布尔表达式为true将执行的语句
    }
    

    实例:

    package cn.coder306;
    
    public class Main {
    	public static void main(String[] args) {
    		volumeControl(10);
    	}
    	
    	// 音量控制器
    	public static void volumeControl(int i) {
    		if(i < 10) {
    			System.out.println("音量小于10");
    		}
    	}
    }
    

    if...else语句

    语法:

    if(布尔表达式){
       //如果布尔表达式的值为true
    }else{
       //如果布尔表达式的值为false
    }
    

    实例:

    package cn.coder306;
    
    public class Main {
    	public static void main(String[] args) {
    		volumeControl(10);
    	}
    	
    	// 音量控制器
    	public static void volumeControl(int i) {
    		if(i < 10) {
    			System.out.println("音量小于10");
    		}else{
    			System.out.println("音量大于等于10");
    		}
    	}
    }
    

    if...else if...else 语句

    语法:

    if(布尔表达式 1){
       //如果布尔表达式 1的值为true执行代码
    }else if(布尔表达式 2){
       //如果布尔表达式 2的值为true执行代码
    }else if(布尔表达式 3){
       //如果布尔表达式 3的值为true执行代码
    }else {
       //如果以上布尔表达式都不为true执行代码
    }
    

    实例:

    package cn.coder306;
    
    public class Main {
    	public static void main(String[] args) {
    		volumeControl(10);
    	}
    	
    	// 音量控制器
    	public static void volumeControl(int i) {
    		if(i < 10) {
    			System.out.println("音量太小");
    		} else if(i == 10){
    			System.out.println("音量适合");
    		} else {
    			System.out.println("音量太大");
    		}
    	}
    }
    

    注意:

    • if 语句至多有 1 个 else 语句,else 语句在所有的 else if 语句之后。
    • if 语句可以有若干个 else if 语句,它们必须在 else 语句之前。
    • 一旦其中一个 else if 语句检测为 true,其他的 else if 以及 else 语句都将跳过执行。

    switch case 语句

    语法:

    switch(expression){
        case value :
           //语句
           break; //可选
        case value :
           //语句
           break; //可选
        //你可以有任意数量的case语句
        default : //可选
           //语句
    }
    

    switch case 语句有如下规则:

    • switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch 支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量。
    • switch 语句可以拥有多个 case 语句。每个 case 后面跟一个要比较的值和冒号。
    • case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。
    • 当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。
    • 当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。case 语句不必须要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句。
    • switch 语句可以包含一个 default 分支,该分支一般是 switch 语句的最后一个分支(可以在任何位置,但建议在最后一个)。default 在没有 case 语句的值和变量值相等的时候执行。default 分支不需要 break 语句。

    switch case 执行时,一定会先进行匹配,匹配成功返回当前 case 的值,再根据是否有 break,判断是否继续输出,或是跳出判断。

    public class Test {
       public static void main(String args[]){
          //char grade = args[0].charAt(0);
          char grade = 'C';
     
          switch(grade)
          {
             case 'A' :
                System.out.println("优秀"); 
                break;
             case 'B' :
             case 'C' :
                System.out.println("良好");
                break;
             case 'D' :
                System.out.println("及格");
                break;
             case 'F' :
                System.out.println("你需要再努力努力");
                break;
             default :
                System.out.println("未知等级");
          }
          System.out.println("你的等级是 " + grade);
       }
    }
    

    循环结构

    循环结构是程序中的另一种重要结构,它和顺序结构、选择结构共同作为各种复杂程序的基本构造部件。循环结构的特点是在给定条件成立时,反复执行某个程序段。通常我们称给定条件为循环条件,称反复执行的程序段为循环体。循环体可以是复合语句、单个语句或空语句。在循环体中也可以包含循环语句,实现循环的嵌套。

    Java中有三种主要的循环结构:

    • while 循环
    • do…while 循环
    • for 循环

    while循环

    语法:

    // 只要布尔表达式为 true,循环就会一直执行下去。
    while( 布尔表达式 ) {
      // 循环内容
    }
    

    实例:

    小朋友数数字从1数到100

    package cn.coder306;
    
    public class Main {
    	public static void main(String[] args) {
    		readNumbers(100);
    	}
    	
    	// 数数字
    	public static void readNumbers(int num) {
    		int i = 0;
    		while(i <= num) {
    			System.out.println("数字:" + i++);
    		}
    	}
    }
    

    do…while 循环

    对于 while 语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。do…while 循环和 while 循环相似,不同的是,do…while 循环至少会执行一次。

    do {
        //代码语句
    }while(布尔表达式);
    // 布尔表达式的值为 true,则语句块一直执行,直到布尔表达式的值为 false
    

    实例:

    比如超时购物,需要先选购商品,然后才能结账,这时候就需要先让顾客进入到超时中选购,选购满了后然后再出来。

    package cn.coder306;
    
    public class Main {
    	public static void main(String[] args) {
    		shopping(100);
    	}
    	
    	// 超时购物
    	public static void shopping(int num) {
    		int i = 0;
    		do{
    			i++;
    			System.out.println("选购商品数量:" + i);
    		}while(i <= num);
    	}
    }
    

    for循环

    语法:

    for(初始化; 布尔表达式; 更新) {
        //代码语句
    }
    

    说明:

    • 最先执行初始化步骤。可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句。
    • 然后,检测布尔表达式的值。如果为 true,循环体被执行。如果为false,循环终止,开始执行循环体后面的语句。
    • 执行一次循环后,更新循环控制变量。
    • 再次检测布尔表达式。循环执行上面的过程。

    实例:

    package cn.coder306;
    
    public class Main {
    	public static void main(String[] args) {
    		readNumbers(100);
    	}
    	
    	// 数数字
    	public static void readNumbers(int num) {
    		for(int i = 0 ; i < num; i++) {
    			System.out.println("数字:" + i);
    		}
    	}
    }
    

    java增强for循环

    语法:

    Java5 引入了一种主要用于数组的增强型 for 循环。Java 增强 for 循环语法格式如下:

    // 表达式可以是数组或集合
    for(声明语句 : 表达式)
    {
       // 代码句子
    }
    

    实例:

    package cn.coder306;
    
    public class Main {
    	public static void main(String[] args) {
            int [] numbers = {10, 20, 30, 40, 50};
    		readNumbers(numbers);
    	}
    	
    	// 读数字
    	public static void readNumbers(int[] numbers) {
    		for(int n :  numbers) {
    			System.out.println("数字:" + i);
    		}
    	}
    }
    

    循环跳出

    在Java语言中,有一些跳离的语句,如break、continue等语句。break语句和continue语句都是用来控制程序的流程转向的,适当地和灵活地使用它们可以更方便或更简洁地进行程序的设计。

    continue:

    当读到数字20的时候,不打印出来,继续下一个数字打印。

    package cn.coder306;
    
    public class Main {
    	public static void main(String[] args) {
            int [] numbers = {10, 20, 30, 40, 50};
    		readNumbers(numbers);
    	}
    	
    	// 读数字
    	public static void readNumbers(int[] numbers) {
    		for(int n :  numbers) {
                if(n == 20){
                    // 跳到for循环继续读取下一个数字
                    continue;
                }
    			System.out.println("数字:" + i);
    		}
    	}
    }
    

    打印结果:

    10
    30
    40
    50
    

    break:

    当读到数字30的时候,跳出循环。

    package cn.coder306;
    
    public class Main {
    	public static void main(String[] args) {
            int [] numbers = {10, 20, 30, 40, 50};
    		readNumbers(numbers);
    	}
    	
    	// 读数字
    	public static void readNumbers(int[] numbers) {
    		for(int n :  numbers) {
                if(n == 30){
                    // 跳出循环
                    break;
                }
    			System.out.println("数字:" + i);
    		}
    	}
    }
    

    打印结果:

    10
    20
    

    深入探讨可以加笔者QQ:1120855315
    点击获取免费Java免费视频
    添加QQ群837949026可以领取更多学习资料

  • 相关阅读:
    linux hosts.equiv设置解析
    linux 普通synflood攻击防范网络参数设置
    电脑如何刻录光盘的方式
    Linux系统服务详解
    linux下history命令显示历史指令记录的使用方法
    tkinter模块常用参数
    python使用tkinter做界面之颜色
    python进行linux系统监控
    Windows 系统cmd设置添加静态路由方式
    PyCharm在win10的64位系统安装实例
  • 原文地址:https://www.cnblogs.com/coder306/p/13203024.html
Copyright © 2011-2022 走看看