选择流程控制

顺序结构

程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的

代码案例-顺序结构

package com.yeyufan_01;
/*顺序结构,从上往下*/
public class OrderDemo {
public static void main(String[] args) {
	System.out.println("语句1");
	System.out.println("语句2");
	System.out.println("语句3");
	System.out.println("语句4");
}
}

选择结构

代码案例-IF语句格式1

package com.yeyufan_02;
/*
 *  IF语句格式1
 * if(关系表达式) {
 * 			语句体;
 * 		}
执行流程:
 * 		A:首先判断关系表达式看其结果是true还是false
 * 		B:如果是true,就执行语句体
 * 		C:如果是false,就不执行语句体

 * */
public class IfDemo {
public static void main(String[] args) {
	System.out.println("开始");
	// 定义两个变量
	int a = 10;
	int b = 20;

	if (a == b) {
		System.out.println("a等于b");
	}

	int c = 10;
	if (a == c) {
		System.out.println("a等于c");
	}

	System.out.println("结束");
	
}
}

代码案例-IF语句格式2


package com.yeyufan_02;
/*
 * if语句格式2:
 * 		if(关系表达式) {
 * 			语句体1;
 * 		}else {
 * 			语句体2;
 * 		}
 * 
 * 执行流程:
 * 		A:判断关系表达式的值是true还是false
 * 		B:如果是true,就执行语句体1
 * 		C:如果是false,就执行语句体2
 */

public class IfDemo2 {
	public static void main(String[] args) {
		System.out.println("开始");
		int a = 10;
		int b = 10;
		if (a == b) {
			System.out.println("a和b相等");
		} else {
			System.out.println("a和b不相等");
		}
	}
}

代码案例-IF语句格式3

package com.yeyufan_02;

import java.util.Scanner;
/*
 * if语句格式3:
 * 		if(关系表达式1) {
 * 			语句体1;
 * 		}else if(关系表达式2) {
 * 			语句体2;
 * 		}else if(关系表达式3) {
 * 			语句体3;
 * 		}
 * 		...
 * 		else {
 * 			语句体n+1;
 * 		}
 * 
 * 执行流程:
 * 		A:首先判断关系表达式1看其结果是true还是false
 * 		B:如果是true,就执行语句体1
 * 		     如果是false,就继续进行关系表达式2的判断看其结果是true还是false
 * 		C:如果是true,就执行语句体2
 * 		   如果是false,就继续进行关系表达式...的判断看其结果是true还是false
 * 		...
 * 		D:如果没有一个为true的,就执行语句体n+1
 * 
 * if语句的三种格式:
 * 		第一种格式适合做一种情况的判断
 * 		第二种格式适合做二种情况的判断
 * 		第三种格式适合做多种情况的判断
 */

public class IfDemo3 {
public static void main(String[] args) {
	// x和y的关系满足如下:
	// x>=3 y = 2x + 1;
	// -1<=x<3 y = 2x;
	// x<=-1 y = 2x – 1;
	// 根据给定的x的值,计算出y的值并输出。
	Scanner scanner=new Scanner(System.in);
	int x =scanner.nextInt();
	int y;
     if(x>=3)
     {
    	 y=2*x+1;
     }
     else if (x>=-1&&x<3) {
    	 y=2*x;
	}
     else {
		y=2*x-1;
	}
	System.out.println(y);
}
}

代码案例-IF语句练习1

package com.yeyufan_02;

import java.util.Scanner;
/*
 * 键盘录入两个数据,获取这两个数据的较大值
 * 
 */

public class IfDemo4 {
	public static void main(String[] args) {
		// 定义录入对象
		Scanner scanner = new Scanner(System.in);
		int a = scanner.nextInt();
		int b = scanner.nextInt();
		//接收数据
		//比较数据
		if (a>b)
		{
			System.out.println("MAX:"+a);	
		}
		else {
			System.out.println("MAX:"+b);
		}
		
	}
}

代码案例-IF语句练习2

package com.yeyufan_02;

import java.util.Scanner;

/*
 * 键盘录入学生考试成绩,请根据成绩判断该学生属于哪个级别
 * 90-100	优秀
 * 80-90	好
 * 70-80	良
 * 60-70	及格
 * 60以下	不及格
*/
public class IfDemo5 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入学生考试成绩分数!");
		int score = scanner.nextInt();
		if(score>0&&score<100) {
			if (score >= 90 & score <= 100) {
				System.out.println("优秀");
			} else if (score >= 80 && score < 90) {
				System.out.println("好");
			} else if (score >= 70 && score < 80) {
				System.out.println("良");
			} else if (score >= 60 && score < 70) {
				System.out.println("及格");
			} else {
				System.out.println("不及格");
			}
		}else {
			System.out.println("输入的成绩有误");
		}
		

	}
}

switch语句

案例代码-switch语句格式

package com.yeyufan_03;
/*
 * switch语句格式:
 * switch(表达式) {
 * 		case 值1:
 * 			语句体1;
 * 			break;
 * 		case 值2:
 * 			语句体2;
 * 			break;
 * 		...
 * 		default:
 * 			语句体n+1;
 * 			break;
 * }
 * 格式解释:
 * 		表达式:byte,short,int,char
 * 			JDK5以后可以是枚举
 * 			JDK7以后可以是字符串
 * 		case:就是要和表达式进行比较的值
 * 		break:表示中断,结束的意思。
 * 		default:表示所有的情况都不匹配的时候,就执行语句体n+1。和if语句的else相似。
 * 执行流程:
 * 		A:计算出表达式的值
 * 		B:拿计算出来的值和case后面的值依次比较,一旦有对应的值,就执行该处的语句,在执行过程中,遇到 break,就结束。
 * 		C:如果所有的case都不匹配,就会执行default控制的语句,然后结束。
 * 需求:
 * 		根据键盘录入的数值1,2,3,…7输出对应的星期一,星期二,星期三…星期日。
 */

import java.util.Scanner;

public class SwitchDemo {
public static void main(String[] args) {
	Scanner scanner = new Scanner(System.in);
	int a =scanner.nextInt();
	switch (a) {
	case 1:
		System.out.println("星期1");
		break;
	case 2:
		System.out.println("星期2");
		break;
	case 3:
		System.out.println("星期3");
		break;
	case 4:
		System.out.println("星期4");
		break;
	case 5:
		System.out.println("星期5");
		break;
	case 6:
		System.out.println("星期6");
		break;
	default:
		System.out.println("星期日");
		break;
	}
}
}

循环流程控制

for循环

案例代码-for循环格式

package com.yeyufan_04;
/*
 * for循环语句格式:
 * 		for(初始化语句;判断条件语句;控制条件语句) {
 * 			循环体语句;
 * 		}
 * 
 * 		执行流程:
 * 			A:执行初始化语句
 * 			B:执行判断条件语句,看结果是true还是false
 * 				如果是true,就继续执行
 * 				如果是false,就结束循环
 * 			C:执行循环体语句
 * 			D:执行控制条件语句
 * 			E:回到B继续
 * 
 * 需求:
 * 		在控制台输出10次”HelloWorld”的案例。
 */
public class ForDemo {
public static void main(String[] args) {
	for (int i = 1; i <=10; i++) {
		System.out.println("HELLO WORLD!");
	}
}
}

代码案例-for循环练习1

package com.yeyufan_04;
/*
 * 需求:获取数据1-5和5-1
 */

public class ForDemo2 {
public static void main(String[] args) {
	//1-5
	for (int i = 1; i < 6; i++) {
		System.out.println(i);
	}
	System.out.println("-----------");
	//5-1
	for (int i = 5; i >=1 ; i--) {
		System.out.println(i);
	}
}
}

代码案例-for循环练习2

package com.yeyufan_04;
/*
 * 需求:求出1-5之间数据之和
 * 
 */

public class ForDemo3 {
	public static void main(String[] args) {
		int sum = 0;
		for (int i = 1; i <= 5; i++) {
			sum = sum + i;
		}
		System.out.println("SUM=" + sum);
	}
}

代码案例-for循环练习3

package com.yeyufan_04;
/*
 * 需求:求出1-100之间偶数和
 * 
 */

public class ForDemo4 {
public static void main(String[] args) {
	int sum =0;
	for (int i = 1; i <= 100; i++) {
		 if(i%2==0) {
			 sum =sum +i;
		 }
	}
	System.out.println("SUM="+sum);
}
}

代码案例-for循环练习4

package com.yeyufan_04;
/*
 * 需求:在控制台输出所有的”水仙花数”
 * 分析:
 * 		什么是水仙花数呢?
 * 			所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。
 *			举例:153就是一个水仙花数。
 *			153 = 1*1*1 + 5*5*5 + 3*3*3
 * 
 */

public class ForDemo5 {
public static void main(String[] args) {
	for (int i = 100; i <1000; i++) {
		int ge=i%10;
		int shi=i/10%10;
		int bai=i/10/10%10;
		if(i==(ge*ge*ge+shi*shi*shi+bai*bai*bai))
		{
			System.out.println(i);
		}
	}
}
}

while循环

代码案例-while循环格式

package com.yeyufan_05;
/*
 * while循环语句的基本格式:
 * 		while(判断条件语句) {
 * 			循环体语句;
 * 		}
 * 扩展格式:
 * 		初始化语句;
 * 		while(判断条件语句) {
 * 			循环体语句;
 * 			控制条件语句;
 * 		}
 * 
 * 回顾for循环的语句格式:
 * 		for(初始化语句;判断条件语句;控制条件语句) {
 * 			循环体语句;
 * 		}
 */

public class WhileDemo {
public static void main(String[] args) {
	//输出10次HelloWorld
	int x=10;
	while(x>=1)
	{
		System.out.println("HelloWorld");
		x--;
	}
}
}

代码案例-while循环练习

package com.yeyufan_05;
/*
 * 求1-100之和。
 */

public class WhileDemo2 {
	public static void main(String[] args) {
		int i = 1;
		int sum = 0;
		while (i <= 100) {
			sum = sum + i;
			i++;
		}
		System.out.println("SUM="+sum);
	}
}

案例代码-do--while格式

package com.yeyufan_05;
/*
 * do...while循环的基本格式:
 * 		do {
 * 			循环体语句;
 * 		}while(判断条件语句);
 * 扩展格式:
 * 		初始化语句;
 * 		do {
 * 			循环体语句;
 * 			控制条件语句;
 * 		}while(判断条件语句);
 * 执行流程:
 * 		A:执行初始化语句;
 * 		B:执行循环体语句;
 * 		C:执行控制条件语句;
 * 		D:执行判断条件语句,看是true还是false
 * 			如果是true,回到B继续
 * 			如果是false,就结束
 * 
 * 练习:
 * 		求和案例
 */

public class DoWhileDemo {
public static void main(String[] args) {
	int i=1;
	int sum =0;
	do {
		sum =sum +i;
		i++;
	} while (i<=100);
	System.out.println(sum);
}
}

三种循环的区别

do…while循环至少会执行一次循环体。

for循环和while循环只有在条件成立的时候才会去执行循环体

for循环语句和while循环语句的小区别: 控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率

控制循环

代码案例-break的使用

package com.yeyufan_06;
/*
 * break:中断的意思
 * 使用场景:
 * 		A:switch语句中
 * 		B:循环中
 * 注意:
 * 		离开使用场景是没有意义的。
 * 作用:
 * 		跳出循环,让循环提前结束
 */

public class BreakDemo {
public static void main(String[] args) {
	for(int x=1; x<=10; x++) {
		if(x == 3) {
			break;
		}
		System.out.println("HelloWorld");
	}

}
}

代码案例-continue的使用

package com.yeyufan_06;
/*
 * continue:继续的意思
 * 使用场景:
 * 		循环中
 * 注意:
 * 		离开使用场景是没有意义的
 * 作用:
 * 		结束一次循环,继续下一次的循环
 * 区别:
 * 		break:退出循环
 * 		continue:结束一次循环,继续下一次的循环
 */

public class ContinueDemo {
public static void main(String[] args) {
	for(int x=1; x<=10; x++) {
		if(x == 3) {
			//break;
			continue;
		}
		System.out.println(x);
	}

}
}