阿里云【名师课堂】Java零基础入门20 ~ 23:程序逻辑控制

@

基本控制结构

基本控制结构有三种:顺序结构、分支结构(选择结构)、循环结构。
顺序结构:所有代码按照定义的先后顺序一行行执行。
分支结构:进行逻辑判断,当满足某些条件时才会执行某些语句。
循环结构:在一定条件下反复执行某段程序。

20、分支结构

分支结构有两类:ifswitch

if

  • if分支结构的基础语法:
		if (条件表达式1){
		    语句组1 ;
		} else if (条件表达式2) {
			语句组2 ;
			} ······
			else {
				语句组n ;  // 上述条件都不满足时执行
				}
  • 范例:观察if语句
public class TestDemo {    // 定义一个程序类
	public static void main(String args[]) {
		int age = 20 ;
		if (13 <= age && age <= 18){
			System.out.println( "teenager" ) ;
		} else if (age < 13) {
			System.out.println( "child" ) ;
			} else {
				System.out.println( "adult" ) ;
				}
				// 输出adult
	}
}

switch

switch支持int、enum、char、String

  • switch分支结构的基础语法:
		switch(数字 | 枚举 | 字符 | 字符串){
			case 内容1 : {
				内容满足时执行的语句 ;
				[break ;]
			}
			case 内容2: {
				内容满足时执行的语句 ;
				[break ;]
			}
			······
			case 内容n : {
				内容满足时执行的语句 ;
				[break ;]
			}
			[default : {
				都不满足时执行的语句 ;
				[break ;]
			}]

[ ]内为可选操作。但是如果不加break会从满足条件的case语句开始,一直执行直到遇见break或全部执行完毕。

  • 范例:观察switch语句
public class TestDemo {    // 定义一个程序类
	public static void main(String args[]) {
		int ch = 1 ;
		switch(ch) {
			case 1 : {
				System.out.println("ch是1");
				break ;
			}
			case 2 : {
				System.out.println("ch是2");
				break ;
			}
			default : {
				System.out.println("都不满足") ;
				break ;
			}
		}
	}
}
  • 如果不加break输出会是这个结果(ch = 1时)
    在这里插入图片描述
  • 加了break之后(ch = 1时)
    在这里插入图片描述
  • 范例:观察switch语句(使用string)
public class TestDemo {    // 定义一个程序类
	public static void main(String args[]) {
		String info = "hello" ;
		switch(info) {
			case "hello" : {
				System.out.println("你好");
				break ;
			}
			case "bye" : {
				System.out.println("再见");
				break ;
			}
			default : {
				System.out.println("都不满足") ;
				break ;
			}
		}
	}
}

21、循环结构

有两类:while循环、for循环,被反复执行的一段程序称为“循环体”。

while循环

  • while分支结构的基础语法:
		while (条件表达式) {
			循环体语句 ;
		}
  • do-while分支结构的基础语法:
		do{
			循环体语句 ;
		} while (条件表达式) ;

while与do-while语句区别

  • while语句判断条件为假时,不执行循环体,跳转到循环体外执行后续语句;条件为真时每执行完一次循环体都会重新计算一次条件表达式,判断是否继续执行;
  • do-while语句限制性一次循环体中语句,然后再判断条件是否为真,真则继续循环,假则终止循环,因此,do-while循环至少执行一次循环语句

范例:while循环实现1~100累加

public class TestDemo {    // 定义一个程序类
	public static void main(String args[]) {
		int num = 1 ;
		int result = 0 ;
		while (num <= 100){
			result += num;
			num += 1 ;
		}
		System.out.println(result) ;
	}
}

范例:do-while循环实现1~100累加

public class TestDemo {    // 定义一个程序类
	public static void main(String args[]) {
		int num = 1 ;
		int result = 0 ;
		do {
			result += num;
			num += 1 ;
		} while (num <= 100) ;
		System.out.println(result) ;
	}
}

二者结果都是5050。

  • 范例:观察whiledo-while区别
    把while循环和do-while循环里的num赋值都改为3000,得到:
    在这里插入图片描述在这里插入图片描述

for循环

  • for分支结构的基础语法:
		for (循环初始化条件 ; 循环结束判断 ; 修改循环条件) {
			循环体代码;
		}
  • 范例:for循环实现1~100累加
public class TestDemo {    // 定义一个程序类
	public static void main(String args[]) {
		int result = 0 ;
		// 1、循环初始化:num = 1
		// 2、判断循环条件:num <= 100
		// 4、循环条件变更:num++
		// 5、再次判断循环条件
		for (int num = 1 ; num <= 100 ; num++) {
			result += num ;  // 3、执行循环体语句
		}
		System.out.println(result) ;
	}
}

循环使用技巧:

  • 对于不知道循环次数,但是直到循环结束条件:使用while循环;
  • 明确知道循环次数时使用for循环。

22、循环控制

两个关键字:continue、break

continue

执行到continue时跳出循环,返回for循环的条件判断处进行处理,循环体后续语句不执行。

public class TestDemo {    // 定义一个程序类
	public static void main(String args[]) {
		for (int num = 1 ; num <= 10 ; num++) {
			if(num == 4) {
				continue ;
			}
			System.out.println(num) ;
		}
	}
}

可以看到4被跳过,因为输出4这个语句没有被执行,直接返回了循环开始处。
在这里插入图片描述

break

执行到break时强制退出for循环,循环体后续语句不执行。

public class TestDemo {    // 定义一个程序类
	public static void main(String args[]) {
		for (int num = 1 ; num <= 10 ; num++) {
			if(num == 4) {
				break ;
			}
			System.out.println(num) ;
		}
	}
}

因为输出4以及之后的循环体语句没有被执行,直接退出循环。
在这里插入图片描述

带标号的break与continue语句(了解)

相当于别的语言中的goto语句。

public class TestDemo {    // 定义一个程序类
	public static void main(String args[]) {
		// 使用带标号break、continue语句退出循环嵌套
		outer: for(int i=0;i<3;i++) {
			System.out.print("Pass "+i+": ");
            for (int j=0;j<20;j++) {
				if (j==10) {
					// break outer;
					// continue outer ;
					} 
				System.out.print(j+" ");
				}
			System.out.println("This will not print");
			}  //end of "for"
			System.out.println("\nLoops complete.");
	}
}

在这里插入图片描述

23、循环嵌套

  • 范例:打印九九乘法表
public class TestDemo {    // 定义一个程序类
	public static void main(String args[]) {
		int result = 0 ;
		for(int i = 1 ; i <= 9 ; i++) {
			for (int j = i ; j <= 9 ; j++) {  // 第一种格式
			// for (int j = 1 ; j <= i ; j++) {  // 第二种格式
				result = i * j ;
				System.out.print(i + "*" + j + "=" + result + "\t") ;
				}
			System.out.println();  // 内循环循环一遍后换行
			}
		System.out.println("\nComplete!");
	}
}

在这里插入图片描述

  • 范例:打印金字塔
public class TestDemo {    // 定义一个程序类
	public static void main(String args[]) {
		int line = 7 ;  // 定义行数
		for(int i = 0 ; i < line ; i++) {  // 控制行
			for (int j = 0 ; j < line - i ; j++) {  // 控制每行空格数
			    System.out.print(" ") ;
			}
			for (int k = 0 ; k <= i ; k++){  // 控制每行*数
				System.out.print("* ") ;
			}
			System.out.println();  // 内循环循环一遍后换行
		}
		System.out.println("\nComplete!");
	}
}

在这里插入图片描述

posted @ 2020-06-06 13:33  溺水的情书  阅读(214)  评论(0编辑  收藏  举报