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可以领取更多学习资料

posted @ 2020-06-28 15:28  两粒  阅读(185)  评论(0编辑  收藏  举报