Java基础---流程控制


流程控制(顺序结构-分支结构-循环结构-结束循环的语句)

顺序结构

从上往下依次执行,一句一句的执行,每一行代码都会执行

分支结构

分支结构是有条件的执行某些语句,不是每一行都执行
包括:
	if分支
		一条分支
		两条分支
		多条分支
	switch分支

if分支

if一条分支
	if一条分支(语句块不一定执行)
		语法:
			if(boolean类型的表达式){
				语句块
			}
		语境:
			如果怎么样就怎么样
		执行流程:
			如果boolean类型的表达式的值为true,则执行语句块
			如果boolean类型的表达式的值为false,则不执行语句块
			无论语句块是否执行,都不影响后面程序的执行
		使用注意:1):不能在if(boolean表达式)后使用分号
/**
 * 演示if一条分支
 * @author JackeyLov9
 *
 */			
import java.util.Scanner;                                                                
public static void main(String[ ] args) {
		//创建一个Scanner的对象实例
		Scanner scan = new Scanner(System.in);
		//提醒用户输入
		System.out.println("请输入您的年龄:");
		//接收控制台的输出
		int age = scan.nextInt();
		//if一条分支(如果if中的语句块只有一句,那么可以不使用大括号,一般建议无论有多少句都是用大括号)
		//如果不使用大括号,则只有离if最近的一句受到if的控制
		if(age < 18) {
			System.out.println("小屁孩儿");
		}
		System.out.println("程序继续");
	}
if两条分支
	if两条分支(语句块1和语句块2必定会二选一执行)
		语法:
			if(boolean类型的表达式){
	    		语句块1                                                                
	        }else{
	            语句块2
	        }
		语境:
			如果怎么样就怎么样,否则就怎么样
		执行过程:
			如果boolean类型的表达式的值为true,则执行语句块1
			如果boolean类型的表达式的值为false,则执行语句块2
			无论执行语句块1还是执行语句块2,都不影响后面程序的执行
		使用注意:1):不能在if(boolean表达式)后使用分号
	    		2):不能直接使用else语句
/**
 * 演示if二条分支
 * @author JackeyLov9
 *
 */
import java.util.Scanner;
public static void main(String[] args) {
		//创建Scanner对象的实例
		Scanner scan = new Scanner(System.in);
		//接收用户输入的数据
		System.out.println("请输入金额:");
		double money = scan.nextDouble();
		//if两条分支判断 	如果满50则减10,否则就是原价
		if(money >= 50) {
			money -= 10;
		}else {
			System.out.println("不满足活动要求");
		}
		System.out.println("实付金额:" + money);
	}
if多条分支
	if多条分支结构(最多也只会执行一个分支)
		语法:
			if(boolean类型表达式1){
	    		语句块1
	        }else if(boolean类型表达式2){
	             语句块2
	        }else if(boolean类型表达式3){
	            语句块3	
	        }...[else{
	            语句块
	        }]
	     语境:
			 如果怎么样就怎么样,否则如果怎么样就怎么样...[否则就怎么样]--------有多种情况的选择时使用
			 
		 执行过程:
		 	 从上到下依次判断,如果表达式1为true,则执行语句块1,后面的表达式就不再判断,如果表达式1为false,则再判断表达式2,如果表达式2为true,则执行语句块2,如果表达式2也为false,则以此类推去判断表达式3...
		 	最后如果所有表达式都为false,那么则执行else后面的语句块,如果没有else则直接执行后面的程序
		 使用注意:1):不能在if(boolean表达式)后使用分号
	    		 2):不能直接使用else if语句,必须先使用if语句 	
		 		 3):此时的else的语句表示上述所有条件都为false时才会执行的代码
/**
 * 演示if多条分支
 * @author JackeyLov9
 *
 */
import java.util.Scanner;
public static void main(String[] args) {
		//创建Scanner对象的实例
		Scanner scan = new Scanner(System.in);
		//提醒用户输入
		System.out.println("请输入消费金额:");
		//接收用户输入的数据
		double money = scan.nextDouble();
		//判断(方法一)
//		if(money >= 500 && money < 800) {
//			money *= 0.8;
//		}else if(money >= 800 && money <1000) {
//			money *= 0.7;
//		}else if(money >= 1000) {
//			money *= 0.5;
//		}else {
//			System.out.println("您的消费金额不满足活动要求");
//		}
		//判断(方法二)
		if(money >= 1000) {
			money *= 0.5;
		}else if(money >= 800) {
			money *= 0.7;
		}else if(money >= 500) {
			money *= 0.8;
		}else {
			System.out.println("您的消费金额不满足活动要求");
		}
		System.out.println("您的实际消费金额:" + money);
		//提示用户输入支付金额
		System.out.println("请输入支付金额:");
		//接收支付金额
		double money1 = scan.nextDouble();
		//判断
		if(money1 < money) {
			System.out.println("支付金额不足");
		}else {
			//找零
			double sum = money1 - money;
			System.out.println("找零金额" + sum);
		}
	}

switch分支

表达式的数据类型为char
/**
 * 演示switch支持char类型
 * 
 * @author JackeyLov9
 *
 */
public class SwitchDemo1 {
	public static void main(String[] args) {
		char sex = '猫';
		switch (sex) {
			case '男':
				System.out.println("这是一个男人");
				break;
			case '女':
				System.out.println("这是一个女人");
				break;
			default:
				System.out.println("不太明白");
				break;
		}
	}
}
表达式的数据类型为int
/**
 * 演示switch表达式为int类型
 * 
 * @author JackeyLov9
 *
 */
public class SwitchDemo2 {
	public static void main(String[] args) {
		int score = 5;
		/*
		 *在使用switch语句的过程中,如果多个case后面的执行语句是一样的时候,
		 *我们可以只书写一次该执行语句即可,这是一个简单的写法 
		 */
		switch(score) {
			//5分和4分都算优秀
			case 5:	
			case 4:
				System.out.println("优秀");
				break;
			case 3:
				System.out.println("还行");
				break;
			case 2:
				System.out.println("一般");
				break;
			default:
				System.out.println("叭行");
				break;
		}
	}
}
表达式的数据类型为String
/**
 * 演示switch表达式的数据类型为String
 * @author JackeyLov9
 *
 */
public class SwitchDemo3 {
	public static void main(String[] args) {
		//创建Scanner对象实例
		Scanner scan = new Scanner(System.in);
		//提醒用户输入
		System.out.println("请输入当前段位:");
		//接收用户输入的数据
		String str = scan.next();
		switch(str) {
			case "黑铁":
				System.out.println("纯脑瘫");
				break;
			case "青铜":
				System.out.println("用脚在玩游戏?");
				break;
			case "白银":
				System.out.println("癌症晚期患者");
				break;
			case "黄金":
				System.out.println("癌症中期————有点意识");
				break;
			case "铂金":
				System.out.println("癌症早期————有秀的操作");
				break;
			case "钻石":
				System.out.println("守门员");
				break;
			case "大师":
				System.out.println("菜得像个大师");
				break;
			case "宗师":
				System.out.println("比炒饭大师强");
				break;
			case "王者":
				System.out.println("贴吧人均水平");
				break;
			default:
				System.out.println("三十级二十英雄都没有的渣渣");
				break;
		}
	}
}
表达式的数据类型为枚举
/**
 * 演示switch语句支持枚举类型
 * @author JackeyLov9
 *
 */
public class SwitchDemo4 {
	public static void main(String[] args) {
		//声明一个枚举类型
		Season sea = Season.WINTER;
		//switch表达式支持枚举类型
		switch(sea) {
			case SPRING:
				System.out.println("动物交配");
				break;
			case SUMMER:
				System.out.println("野狗撒欢");
				break;
			case AUTUMN:
				System.out.println("秋风踩落叶");
				break;
			case WINTER:
				System.out.println("大约在冬季");
				break;
			default:
				System.out.println("四季以外的生物");
				break;
		}
	}
}

//声明一个枚举类型
enum Season{
	SPRING,SUMMER,AUTUMN,WINTER
}

if和switch的选择

	if和switch都属于选择语句,也就是说功能是相似的
	
	if:			判断条件是boolean类型的
	switch		判断条件是整数表达式 ==int类型的值.
	
	发现,switch只能适合对整数的值做判断,如果是其他类型的判断,只能使用if语句
	选择:如果是对整数表达式判断等于多少,首选使用switch.
		其它情况使用if语句

循环结构

	当需要重复的去做相同的事情时就要选择使用循环结构
	重复的执行某一段代码块
		重复的执行相同的逻辑则要使用循环结构
	    有条件的执行某语句块多次,但是并非一定全部执行
	
	循环三要素:
			循环变量----在循环过程中发生改变的量叫循环变量
			循环条件----以循环变量为基础的条件
			循环变量的改变(步进)----通常是往循环结束的方向改变
	for循环
	while循环
	do...while循环
		三种,可以完成相同的功能
		仅仅只是语法上有差异
		以上三者循环,在直到具体的循环次数时,优先选择for循环,当不知道具体循环次数时,选择while循环或者 	 do...while循环,当循环体必须执行最少一次时,优先选择do...while循环,否则选择while循环
			
	递归循环
	forEach循环

while循环

	格式:
		while(boolean表达式){
	    		循环体语句;
	             循环变量的改变;
	}
	while循环特点:先判断表达式,若为true就执行循环体,否则,跳过循环体
/**
 * 	演示while循环语句
 * 
 * @author JackeyLove
 */
public class WhileDemo {
	public static void main(String[] args) {
		案例:1):叫五百声帅哥,打印五百次
		
		int count = 0;//表示叫帅哥的次数
		while(count < 500) {
			count ++;
			System.out.println("帅哥" + count);
		}

	 2):1数到100
	 
	 	int num = 1;//表示第一个数
		while(num <= 100) {
			System.out.println(num);//打印num值
			num ++;
		}
	3):计算100以内的正整数之和
	
		int number = 1;//表示第一个加数
			int result = 0;//表示前n个数之和
			while(number <= 100) {
				result = result + number;
				System.out.println(number);//打印出每一个加数
				number ++;
			}
			System.out.println(result);
	}
}

do…while循环

	格式:
		do{
	        循环语句
	        循环变量的改变
		}while(boolean表达式);
	do while循环特点:先执行一次循环体,再判断表达式,若为true就执行循环体,否则,跳过循环体
	也就是说do while是先执行后判断,即使判断条件为false,该循环至少会执行一次
		for循环与while循环的循环体可能一次都不执行(先判断再执行)
/**
 * 	演示do while循环语句
 * @author JackeyLove
 * @date 2019年11月24日下午11:04:29
 */
public class DoWhileDemo {
	public static void main(String[] args) {
		/*
		 * do{
		 * 		循环体(需要重复干的事情)
		 * }while(boolean表达式);
		 * 
		 */
//		boolean boo = false;
//		do {
//			System.out.println("Hello");
//		}while(boo);
		//案例1):叫500声帅哥
		int count = 0;
		do {
//			System.out.println("帅哥");
			count ++;
		}while(count < 500);
		//案例2):从1数到100
		int num = 1;//表示第一个数
		do {
//			System.out.println(num);
			num ++;
		}while(num <= 100);
		//案例3):计算100以内的整数和
		int number = 1;//表示第一个加数
		int result = 0;//最终的和
		do {
			result = result + number;//==>result += number;
			number ++;
		}while(number <= 100);
		System.out.println(result);
	}
}

for循环

	格式:
	for(初始化语句;boolean表达式;循环后操作语句){
	    	循环体语句
	}
	执行流程:
			(1.初始化语句:表示对循环进行初始化,只在循环开始时执行一次,定义一个变量并赋值
			2.boolean表达式:表达式为false时,循环终止,为true才执行循环体
			3.循环后操作语句:循环每次迭代之后会调用该语句,一般的该语句都是递增或递减操作)
			1.循环变量的初始化		只执行一次
			2.判断循环条件是否成立
				如果结果为true,则执行循环体
				如果结果为false,则结束循环体
			3.当循环体执行后,执行循环变量的改变
			4.接下来回到第二步,知道循环条件的结果为false时,结束循环
	
	一般的,在for循环值的循环迭代变量起名规则:
		见过最多的循环变量名称:i j k m n
/**
 * 	演示for循环语句
 * 	
 * @author JackeyLove
 * @date 2019年11月24日下午11:26:00
 */
public class ForDemo {
	public static void main(String[] args) {
		/*
		 * for(初始化语句;boolean表达式;循环后操作语句){
		 * 			循环体语句
		 * }
		 * 
		 * 	执行顺序:
		 * 		1):初始化语句
		 * 		2):boolean表达式
		 *				true:进入第3步
		 * 				false:跳过循环
		 *		3):执行循环体
		 *		4):执行循环之后的操作语句
		 *		5):进入第2步
		 *	注意:初始化语句只在最开始的时候执行一次
		 */
		//案例1):叫500声帅哥
		for(int count = 0; count < 500; count ++) {
//			System.out.println("帅哥" + count);
		}
		//案例2):从1数到500
		for(int num = 1; num <= 100; num ++) {
//			System.out.println(num);
		}
		//案例3):计算100以内的整数和
		int result = 0;//结果之和
		for(int number = 1; number <=100; number ++) {
			result += number;
		}
		System.out.println(result);
	}
}

结束循环的语句

	break;	结束当前循环
	return;	结束整个方法
	System.exit(0);	结束虚拟机
	continue;	结束本次循环,继续下一次循环,也就是说continue之后的内容本次循环不再执行,接着进行下一次循环
	break 标记	跳出标记的循环
	
	注意:
	break、continue、 return后面的语句永远没有机会执行,所以不能再跟任何语句,否则编译失败
	
	break 和 return 都能结束当前循环,如何选择问题:
	如果循环之后的操作还执行就用break,否则就用return

break

结束当前循环

//求出100以内前5个3的倍数的数字:
    
  public class BreakDemo {
	public static void main(String[] args) {
		//3 6 9 12 15 18 21....
		//1.循环出100以内的所有数字
		//2.判断哪些能被3整除的数
		//3.如果是3的倍数用计数器计数
		//4.当计数器等于5的时候终止循环
		int sum = 0;//计算器从0开始
		for(int i = 1;i<=100;i++) {
			if(i%3==0) {
				sum++;
				System.out.println(i);
			}
			if(sum==5) {
				break;
			}
		}
	}
}

continue

结束本次循环,继续下一次循环,也就是说continue之后的内容本次循环不再执行,接着进行下一次循环

public static void main(String[] args) {
		//从1输出到10
		for(int i=1;i<=10;i++) {
			//跳过4输出
			if(i==4) {
				continue;//跳过当前循环,进行下一次循环
			}
			System.out.println(i);
		}
		System.out.println("-------------");
		//输出100~200之间不能被3整除的数
		for(int i=100;i<=200;i++) {
			if(i%3==0) {
				continue;
			}
			System.out.println(i);
		}
	}

return

结束整个方法

public class ReturnDemo {
	public static void main(String[] args) {
		//从1输出到10(用break来结束)
		for(int i =1;i<=10;i++) {
			//输出到7就结束循环
			if(i==7) {
				break;//跳出循环/终止循环
			}
			System.out.println(i);
		}
		System.out.println("Ending....");
		System.out.println("-------------");
		//从1输出到10(用return来结束)
		for(int i =1;i<=10;i++) {
			//输出到7就结束循环
			if(i==7) {
				return;//结束所在的方法
			}
			System.out.println(i
					);
		}
		System.out.println("Ending....");
	}
} 

控制外层循环

此时就得使用标签了,标签就是给某个循环起的别名,不过该别名得满足标识符的规范。
若要控制外层循环,就在break或continue后面跟上循环的别名就OK了
如: break <标签名>;

可以去我的个人博客查看更多文章,https://www.sidchai.icu

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值