04流程控制

本文仅作为个人纪录

流程控制

流程控制的作用:

流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块

控制语句的分类:

控制语句分为三类:顺序、选择和循环。

“顺序结构” 代表 “先执行a,再执行b”的逻辑

“条件判断结构”代表“如果…,则…”的逻辑

“循环结构”代表“如果…,则…”的逻辑

三种流程控制语句就能表示所有的事情!这三种基本逻辑结构是相互支撑的,他们共同构成了算法的基本结构,无论怎样负责的逻辑结构,都可以通过他们表达。所以任意一种高级语言都具备上述两种结构。

if

单分支

if-单分支:
(1)结构:
if(条件表达式,这个表达式的结果是布尔值:要么是false,要么是true){
//如果上面()中的表达式返回结果是true,那么执行{}中代码
//如果上面()中的表达式返回结果是false ,那么不执行{}中代码
//PS:{}中的代码是否执行,取决于()中表达式的返回结果
}
(2)上面的代码中,我用四个单分支拼凑出四个选择,每个选择是独立的,依次判断执行的
(3)if后面的()中的条件,要按照自己需求尽量完善
(4){}可以省略不写,但是一旦省略,这个if就只负责后面的一句话,所以我们不建议初学者省略

	//实现一个功能:给出三个数(1-6),对三个数求和计算,根据和的大小来分配不同的奖品
		//1.给出三个数:
		int num1 = (int)(Math.random()*6) +1;
		int num2 = (int)(Math.random()*6) +1;
		int num3 = (int)(Math.random()*6) +1;
		//2.求和
		int sum = 0;
		sum += num1;
		sum += num2;
		sum += num3;
		System.out.println("和为:"+sum);
		
		//3.根据和判断奖品:
		//如果和大于等于14,那么就是一等奖
		if(sum>=14){
			System.out.println("一等奖");
			System.out.println("恭喜你很幸运,中了一等奖");
		}
		
		if(sum>=10&&sum<14){
			System.out.println("二等奖");
		}
		
		if(sum>=6&&sum<10){
			System.out.println("三等奖");
		}
		
		if(sum<6){
			System.out.println("四等奖");
		}
	
多分支 双分支
  【2】else:隐藏了一个条件,跟上面分支条件表达式相反的功能  
  	【3】多分支:好处:只要满足一个 分支以后,后面的分支就不需要判断了 --》效率高
  	【4】我们写代码的时候,尽量保证else的存在--》else分支相当于“兜底”“备胎”的作用,别的分支都不走,就会走这个分支了
//实现一个功能:给出三个数(1-6),对三个数求和计算,根据和的大小来分配不同的奖品
		//1.给出三个数:
		int num1 = 6;
		int num2 = 4;
		int num3 = 2;
		//2.求和
		int sum = 0;
		sum += num1;
		sum += num2;
		sum += num3;
		System.out.println("和为:"+sum);
		
		//3.根据和判断奖品:
		/*
		利用一个多分支
		【1】结构:
		if(){
			
		}else if(){
			
		}else if(){
			
		}...
		else{
			
		}
	
		*/
		if(sum>=14){
			System.out.println("一等奖");
		}else if(sum>=10){//隐藏了sum<14
			System.out.println("二等奖");
		}else if(sum>=6){//隐藏了sum<10
			System.out.println("三等奖");
		}else{//隐藏了sum<6
			System.out.println("四等奖");
		}
随机数

随机数:在这个数在生成之前不确定这个数是多少,不可知

在Java中依靠一个类:Math类帮助我们生成,这个类中有一个方法专门用来生成随机数:

请添加图片描述

Math.random()------>[0.0,1.0)
Math.random()86------>[0.0,6.0)
(int)(Math.random()*6)+1------>[1,6]
                       
//应用到程序中:
int num1 = (int)(Math.random()*6)+1                                      

练习

[36,92]------>[0,56]+36---->(int)(Math.random*57)+32

请添加图片描述

hasNextInt()如果输入的值为int类型返回true,否则返回false

switch

switch语句会根据表达式的值从相匹配decase标签处开始执行,一直执行到break语句出或者是switch语句的末尾。如果表达式的值与任意case值不匹配,则会进入default语句(如果存在default语句的情况)。根据表达式值的不同可以执行许多不同的操作。switch语句中case标签在JDK1.5之前必须是整数(long类型除外)或者枚举,不能是字符串,在JDK1.7之后允许使用字符串(String)。大家要注意当布尔表达式是等值判断的情况下,可以使用if-else if-else多分枝结构或者switch结构,如果布尔表达式区间怕暖的情况,则只能使用if-else if-else多分支结构。

  【1】语法结构:
  	switch(){
  		case * :
  		case * :
  		.......
  	}
  	【2】switch后面是一个(),()中表达式返回的结果是一个等值,这个等值的类型可以为:
  	int,byte,short,char,String,枚举类型
  	【3】这个()中的等值会依次跟case后面的值进行比较,如果匹配成功,就执行:后面的代码
  	【4】为了防止代码的“穿透”效果:在每个分支后面加上一个关键词break,遇到break这个分支就结束了
  	【5】类似else的“兜底”“备胎”的分支:default分支
  	【6】default分支可以写在任意的位置上,但是如果没有在最后一行,后面必须加上break关键字,
  	如果在最后一行的话,break可以省略
  	【7】相邻分支逻辑是一样的,那么就可以只保留最后一个分支,上面的都可以省去不写了
  	【8】switch分支和if分支区别:
  	表达式是等值判断的话--》if ,switch都可以
  	如果表达式是区间判断的情况---》if最好
  	【9】switch应用场合:就是等值判断,等值的情况比较少的情况下
/*
		实现一个功能:
		根据给出的学生分数,判断学生的等级:
		>=90  -----A
		>=80  -----B
		>=70  -----C
		>=60  -----D
		<60   -----E
		
		用if分支:
		if(score>=90){
			
		}else if(score>=80){
			
		}
		*/
		//1.给出学生的成绩:
		int score = 167;
		//2.根据成绩判断学生的等级:
		switch(score/10){
			case 10 : 
			case 9 : System.out.println("A级");break;
			case 8 : System.out.println("B级");break;
			case 7 : System.out.println("C级");break;
			case 6 : System.out.println("D级");break;
			default:System.out.println("成绩错误");break;
			case 5 :  
			case 4 :  
			case 3 :  
			case 2 :  
			case 1 :  
			case 0 : System.out.println("E级");break;
			
		}
	 

循环结构

while

语法结构

while(布尔表达式){
	循环体;
}
     	//功能:1+2+3+4+5
		//1.定义变量:
		int num = 1;//条件初始化
		//2.定义一个求和变量,用来接收和:
		int sum = 0;
		
		while(num<=5){//条件判断
			sum += num;//循环体
			num++;//迭代
		}
		
		
		//3.输出和
		System.out.println(sum);
do-while

【1】while和do-while的区别:
while:先判断,再执行
do-while:先执行,再判断—》至少被执行一次,从第二次开始才进行判断
【2】什么场合使用do-while:

  		while(考试是否通过){
  			考试;
  		}
  		---》不合适
  		do{
  			考试;
  		}while(考试是否通过);
  		---》合适
	//1+2+3+4+...100
		//while方式:
		/*
		int i = 101;
		int sum = 0;
		while(i<=100){
			sum += i;
			i++;
		}
		System.out.println(i);//101
		System.out.println(sum);//0
		*/
		//do-while方式:
		
		int i = 101;
		int sum = 0;
		do{
			sum += i;
			i++;
		}while(i<=100);//一定要注意写这个分号,否则编译出错
		System.out.println(i);//102
		System.out.println(sum);//101
	
for
	//1+2+3+..+100
		//while:
		/*int i = 1;
		int sum = 0;
		while(i<=100){
			sum += i;
			i++;
		}
		System.out.println(sum);
		*/
		
		//for:
		int sum = 0;
		int i;
		for(i = 1;i<=100;i++){
			sum += i;
		}
		System.out.println(sum);
		System.out.println(i);
		
		/*
		【1】for的结构:
		for(条件初始化;条件判断;迭代){
			循环体;
		}
		
		【2】i的作用域:作用范围:离变量最近{}  --->可以自己去控制
		【3】for循环格式特别灵活:格式虽然很灵活,但是我们自己写代码的时候不建议灵活着写。
		for(;;){}  -->死循环
		
		int i = 1;
		for(;i<=100;){
			sum += i;
			i++;
		}
		
		【4】死循环:
		for(;;){}
		
		while(true){}
		
		do{
			
		}while(true);
		
		【5】循环分为两大类:
		第一类:当型   while(){}   for(;;){}
		第二类:直到型  do{}while();
		
		【6】以后常用:for循环 
		【7】do-while,while,for循环谁的效率高?  一样高 
		*/
关键字

在任何循语句的主体部分,均可用break控制循环的流程。

break用于强行退出循环,不执行循环中剩余的语句。

continue语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。

return的作用,结束当前所在方法的执行

break
		//功能:求1-100的和,当和第一次超过300的时候,停止程序
		int sum = 0;
		for(int i=1;i<=100;i++){	
			sum += i;	
			if(sum>300){//当和第一次超过300的时候
				//停止循环
				break;//停止循环
			}
			System.out.println(sum);
		}

break带标签

outer:
		for(int i=1;i<=100;i++){
			System.out.println(i);
			while(i==36){
				break outer;  
			}
		}
	//break的作用:停止最近的循环
		/*
		for(int i=1;i<=100;i++){
			System.out.println(i);
			if(i==36){
				break;//1-36
			}
		}
		*/
		for(int i=1;i<=100;i++){
			System.out.println(i);
			while(i==36){
				break; //1-100  ---》break停止的是while循环,而不是外面的for循环
			}
		}
continue
	//功能:输出1-100中被6整除的数:
		//方式1:
		/*
		for(int i=1;i<=100;i++){	
			if(i%6==0){//被6整除
				System.out.println(i);
			}
		}
		*/
		
		//方式2:
		for(int i=1;i<=100;i++){	
			if(i%6!=0){//不被6整除
				continue;//停止本次循环,继续下一次循环
			}
			System.out.println(i);
		}
	//continue:结束本次离它近的循环,继续下一次循环
		/*
		for(int i=1;i<=100;i++){	
			if(i==36){
				continue;//1-100中间没有36
			}
			System.out.println(i);
		}
		*/
		
		for(int i=1;i<=100;i++){	
			while(i==36){
				System.out.println("------");
				continue; //1-35+死循环
			}
			System.out.println(i);
		}

continue带标签

	outer:
		for(int i=1;i<=100;i++){	
			while(i==36){ 
				continue outer;  //1-100没有36
			}
			System.out.println(i);
		}
return
//return:遇到return结束当前正在执行的方法
		for(int i=1;i<=100;i++){	
			while(i==36){ 
				return;  
			}
			System.out.println(i);
		}
		
		System.out.println("-----");//shang'mia
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值