Java03_【流程控制语句】

第一章流程控制

1.1概述:在程序执行时,各条语句的执行顺序对程序的结果是有直接影响,也就是说程序的流程对运行结果也有直接影响。

所以我们在运行程序时,就需要流程控制。

1.2顺序结构--从上到下依次执行

public class Demo{
	public static void main(String[] args){
			/*
			int num = 10;
			
			System.out.println(num);*/
			
			System.out.println("A");
			System.out.println("B");
			System.out.println("C");
	}
}

1.3分为三类

(1)顺序结构

(2)选择结构

(3)循环结构

第二章分支/选择结构--让代码有选择性的执行

俩种:if/switch

2.1if选择语句

三种格式

1.if(布尔表达式){语句体}

代码

public class Demo{
	public static void main(String[] args){
		
		boolean sex = true;//表示男
		
		if(sex){
			System.out.println("进男厕所");
		}
		
		System.out.println("回来上课");
	}
}

2.if(布尔表达式){语句体}else{语句体}

 

执行流程

  1. 计算布尔表达式的值,得到一个boolean值
  2. 是true 执行语句体1,不执行语句体2,跳到结束位置
  3. 是false 不 执行语句体1,执行语句体2,跳到结束位置

代码

public class Demo{
	public static void main(String[] args){
		
		boolean sex = false;
		
		if(sex){
			System.out.println("进男厕所");
		}else{
			System.out.println("进女厕所");
		}
		
		System.out.println("回来上课");
	}
}

3.if(布尔表达式){语句体}else if(布尔表达式){语句体}else if(布尔表达式){语句体}else{语句体}

  1. 计算布尔表达式
  2. 哪个为true执行对应的语句体,跳到结束位置
  3. 都为false 执行else的语句体,跳到结束位置

哪个布尔表达式为true就执行它的语句体,跳到结束位置

代码

public class Demo{
	public static void main(String[] args){
		/*
		90-100 优秀
		80-89 好
		70-79 良
		60-69 及格
		60以下 不及格*/
		
		//模拟用户输入的
		
		int score = 98;
		
		if(score >= 90 && score <= 100 ){
			
			System.out.println("美女");
			
		}else if ( score>= 80 && score <= 89 ){
			
			System.out.println("法拉拉拉拉利");
			
		}else if ( score>=70 && score <= 79){
			
			System.out.println("500万");
			
		}else if ( score>=60 && score<=69){
			
			System.out.println("100万");
			
		}else if ( score >= 0 && score <= 59){
			
			System.out.println("笨蛋");
			
		}else{
			System.out.println("输入的成绩有错,超出0-100的范围");
		}
	}
}

4.if的第二种格式与三元运算符

1if-else语句体都是对同一个变量进行赋值时

2.三元运算符更简单

代码

public class Demo{
	public static void main(String[] args){
		//模拟用户输入
			int a = 100;
			int b = 20;
			
		/*
		int max ;
		//
		if(a > b ){
			max = a;
		}else{
			max = b;
		}
		System.out.println(max);*/
		
		int max = a > b ? a : b;
		
		System.out.println(max);
	}
}

2.2switch语句

1.当我们计算一个表达式的值,与一堆不相同的常量进行比较时,匹配到就执行语句体,

都不匹配就执行默认语句体

格式

表达式结果只能是byte short int char String

 switch(表达式){

     case  常量1:

          执行语句体1

           break;

     case  常量2:

          执行语句体2

           break;

     case  常量2:

          执行语句体2

           break;

.....

    default:

          执行语句体n

           break;

代码

public class Demo{
	public static void main(String[] args){
		//1,模拟用户输入
		int day = 3;
		
		//2,
		switch(day){
			case 1:
				System.out.println("星期一");
				break;
			case 2:
				System.out.println("星期二");
				break;
			case 3:
				System.out.println("星期三");
				break;
			case 4:
				System.out.println("星期四");
				break;
			case 5:
				System.out.println("星期五");
				break;
			case 6:
				System.out.println("星期六");
				break;
			case 7:
				System.out.println("星期日");
				break;
			default:
				System.out.println("你是笨蛋,怎么输入的");
				break;
		}
	}
}

2switch 执行流程

 1.计算表达式的值

 2.根据值直接跳分支常量,执行对应的语句体,break直接跳到结束

 3.跳到default分支,执行对应的语句体,break直接跳到结束

【匹配上哪个分支,就执行他的语句体,跳到结束位置】

3switch语句穿透性

 如果你省略了标准格式中的break,就会发生穿透性,直接执行分支的语句体,不做匹配,知道结束

当多个分支需要执行相同的语句体时,使用穿透性可以简化代码

代码

public class Demo{
	public static void main(String[] args){
				
				//1,根据月份的数字,打印月份的名字
				/*
				3,4,5   春
				6,7,8   夏
				9,10,11 秋
				12,1,2  冬
				*/
				int m = 8;
				
				switch(m){
					case 3:
					case 4:
					case 5:
						System.out.println("春");
						break;
					case 6:
					case 7:
					case 8:
						System.out.println("夏");
						break;
					case 9:
					case 10:
					case 11:
						System.out.println("秋");
						break;
					case 12:
					case 1:
					case 2:
						System.out.println("冬");
						break;
				}
				
				
					
				/*
				int  num = 1;
				//byte short int char String
				
				switch(num){
					case 1:
						System.out.println("执行语句体1");
						//break;
					case 2:
						System.out.println("执行语句体2");
						break;
					default :
						System.out.println("执行default语句体");
						break;
				}*/
	}
}

2.2循环结构

让相同的代码被重复执行,指定执行次数

包含三个语句

1.for

2.while

3.do-while

for循环

格式

for(初始化语句体;布尔表达式;步进表达式){循环体}

执行流程

public class Demo{
	public static void main(String[] args){
			/*
			System.out.println("媳妇我错了");
			System.out.println("媳妇我错了");
			System.out.println("媳妇我错了");
			System.out.println("媳妇我错了");
			System.out.println("媳妇我错了");
			System.out.println("媳妇我错了");
			System.out.println("媳妇我错了");
			System.out.println("媳妇我错了");
			System.out.println("媳妇我错了");
			System.out.println("媳妇我错了");*/
			//①初始化语句  计算器  int i = 0;
			//②循环条件   布尔表达式   i < 10
			//③循环体被重复执行的代码 
			//④步进表达式	i = i+1    i+=1  ++i  i++
			
			
			for( int i = 0; i < 10; i++){
			

				System.out.println("媳妇我错了");
			
			
			}
	}
}

while循环

格式

初始化语句

while(布尔表达式){循环体;步进表达式}

public class Demo{
	public static void main(String[] args){
			/*
			System.out.println("媳妇我错了");
			System.out.println("媳妇我错了");
			System.out.println("媳妇我错了");
			System.out.println("媳妇我错了");
			System.out.println("媳妇我错了");
			System.out.println("媳妇我错了");
			System.out.println("媳妇我错了");
			System.out.println("媳妇我错了");
			System.out.println("媳妇我错了");
			System.out.println("媳妇我错了");*/
			
			//
			int i = 0;
			
			while(i < 10){
				
					System.out.println("媳妇我错了");
					
					i++;//一定要有步进语句
			}
	}
}

do-while循环

格式

初始化语句体

do{循环体;步进表达式}while(布尔表达式)

public class Demo{
	public static void main(String[] args){
			/*
			System.out.println("媳妇我错了");
			System.out.println("媳妇我错了");
			System.out.println("媳妇我错了");
			System.out.println("媳妇我错了");
			System.out.println("媳妇我错了");
			System.out.println("媳妇我错了");
			System.out.println("媳妇我错了");
			System.out.println("媳妇我错了");
			System.out.println("媳妇我错了");
			System.out.println("媳妇我错了");*/
			
			//
			int i = 0;

			do{
				
				System.out.println("媳妇我错了");
				
				i++;//一定要记住要有步进
				
			}while( i < 10); //一定要记住结束位置有一个分号
	}
}

练习

public class Demo{
	public static void main(String[] args){
			//
			
			//打印1-100
			
			//System.out.println(1);
			//System.out.println(2);
			//System.out.println(3);
			
			/*
			for( int i = 1; i <= 100; i++ ){
				System.out.println(i);
			}*/
			
			//打印1-100之间所有偶数  
			
			/*
			for( int i = 1; i <= 100; i++ ){
				
				//作一个条件判断,只要是偶数我才打印
				if(i % 2 == 0){
					System.out.println(i);
				}
				
			}*/
			//求1-100之间所有偶数的和
			int sum = 0;//只要有一个,不能写在循环体
			
			for( int i = 1; i<=10 ; i++){
				
				//作判断
				if(i % 2 == 0 ){
					//sum =  sum + i;
					
					sum += i;
				}
			}//end 
			
			System.out.println(sum);
			
			
			
	}
}

循环小结

1.for最常用                   计算要有明确的范围

2.while比较常用            IO流/范围不需要太明确

3.do-while不是很常用   必须要执行一次循环体

区别

      1.do-while无论循环条件是不是满足至少执行一次

      2.除了for其他循环的计数器,在循环结束时还能使用

public class Demo{
	public static void main(String[] args){
			
			int i = 1;
			do{
				System.out.println(i);
				i++;//2
			}while(i>=100);//end
			
			System.out.println(i);//i属于main的大括号,main没有结束,i不会被释放
			
			/*
			for(int j = 1;j<= 10;j++){
				System.out.println(j);
			}//end
			*/
			//System.out.println(j);//在for循环结束时,for都被释放了,属于它的变量j也被释放
			
	}
}

2.3.break关键字和continue关键字

break也是java一个关键字

俩个使用地方

   1.在switch语句中使用,跳到结束位置

   2.在三种循环中也可以使用,立刻马上,跳到循环的结束位置

格式:break;

continue关键字

continue也是java中的一个关键字

 1.只能在循环中使用

 2.立刻马上跳过本次循环,继续下一次

public class Demo{
	public static void main(String[] args){
	
			/*
		for(int i = 1;i<=5;i++){
			
			if(i == 3){
				
				break;
			
			}
			
			System.out.println(i);
		
		}*/
		
		for(int i = 1;i<=5;i++){
			
			if(i %2 == 0){ //2
				
				continue;//立马跳过本次循环,继续下一次
			
			}
			
			System.out.println(i);
		
		}
			
	}
}

2.4死循环

不能自己结束的循环,就是死循环

常见的几种格式

1for

2while

3do-while

死循环的出现情况

1.程序员写循环没有步进

2.程序员设计的需求

死循环可以退出 写上一个条件,里面写一个break;

public class Demo{
	public static void main(String[] args){
	
			//1.for
			/*
			for( ; true ; ){
				System.out.println("--你永远对的.");
			}*/
			
			/*
			for(  ;  ; ){
				System.out.println("--你永远对的.");
			}*/
			//2.while
			
			/*
			while(true){
				System.out.println("--你永远对的.");
			}*/
			
			//3.do-while
			/*
			do{
				System.out.println("--你永远对的.");
				
			}while(true);*/
			
			//1,程序员写循环没有步进
			/*
			int i = 1;
			while(i<=10){
				System.out.println(i);
				//i++;
			}*/
			
			//2,程序设计的需要
			int i = 0;
			while(true){
				
				System.out.println(i);
				i++;
				if(i ==10){
					break;
				}
			}
			
	}
}

2.5嵌套循环

1.一个循环(外层循环)里面可以包含另一个循环(内层循环)

2.例子

for(...){

   for(...){

       ...

         }

3.当发现几个循环代码相同时,我们可以用嵌套循环来简化代码

4.例子5*8的长方形

* * * * * * * *

* * * * * * * *

* * * * * * * *

* * * * * * * *

* * * * * * * *

public class Demo{
	public static void main(String[] args){
			/*
			
			4,例子: 5x8 的长方形

				********
				********
				********
				********
				********
				
				1,打印一行
				2,打印五行
			*/
			
			//System.out.println("********");//a.需求变化  b.  星号太多花
			/*
			//1行
			for(int l = 1 ; l<= 8; l++){
				System.out.print("*");
			}//end
			System.out.println();
			
			//2行
			for(int l = 1 ; l<= 8; l++){
				System.out.print("*");
			}//end
			System.out.println();
			
			//3行
			for(int l = 1 ; l<= 8; l++){
				System.out.print("*");
			}//end
			System.out.println();
			
			
			//4行
			for(int l = 1 ; l<= 8; l++){
				System.out.print("*");
			}//end
			System.out.println();*/
			
			for(int h = 1;h <=5;h++){//外层循环
				//打印一行8星的代码
					for(int l = 1 ; l<= 8; l++){//内层循环
					System.out.print("*");
					}//end
					System.out.println();
			}
	}
}

嵌套循环练习1正方形9*9

1.外层循环9次

2.重复执行:内层循环 打印9个*

public class Demo{
	public static void main(String[] args){
			/*
			
			4,例子: 9x9 的正方形

				*********
				*********
				*********
				...
				
				
			*/
			for(int h = 1;h<=9;h++){ //外层循环
				
				
				for(int l = 1;l<=9;l++){//内层循环
					
					System.out.print("* ");
				}
				
				//换行,够9星就得另起一行
				System.out.println();
				
			}
			
			
	}
}

嵌套循环练习2-打印三角形

public class Demo{
	public static void main(String[] args){
			/*
			
			4,例子: 9x9 的三角形

				h =1  打印 1星
				h =2  打印 2星
				h =3  打印 3星
				...
				h =9  打印 9星
				
				
			*/
			/*
			for(int h = 1;h<=9;h++){
				
				//每一行
				for(int l = 1;l<= 9 ;l++){
					System.out.print("* ");
				}
				//够星数就换行
				System.out.println();
			}*/
			
			for(int h = 1;h<=9;h++){
				//System.out.println(h);
				
				for(int l = 1;l<= h ;l++){
				System.out.print("* ");
				}
				//够星数就换行
				System.out.println();
			}
			
			/*
			
			//1行
			for(int l = 1;l<= 1 ;l++){
				System.out.print("* ");
			}
			//够星数就换行
			System.out.println();
			//2行
			for(int l = 1;l<= 2 ;l++){
				System.out.print("* ");
			}
			//够星数就换行
			System.out.println();
			
			//3行
			for(int l = 1;l<= 3 ;l++){
				System.out.print("* ");
			}
			//够星数就换行
			System.out.println();
			
			//4行
			for(int l = 1;l<= 4 ;l++){
				System.out.print("* ");
			}
			//够星数就换行
			System.out.println(); */
			
			
	}
}

嵌套循环练习3-9*9乘法表

1.在三角形的基础,快速开发99

 (1)把*换成1*1=1

(2)将1换成变量

(3)字符串中内容要换成变量“+变量名+”

public class Demo{
	public static void main(String[] args){
			/*
			
			4,例子: 9x9 

				1,在三角形的基础,快速开发99
				(1) * 换成 1x1=1 
				(2)将1换成变量
				
				
			*/
			for(int h = 1;h<=9;h++){
				
				//每一行
				for(int l = 1;l<= h ;l++){
					System.out.print(l+"x"+h+"="+(h*l)+" ");
				}
				//够星数就换行
				System.out.println();
			}
			
			
	}
}

猜你喜欢

转载自blog.csdn.net/qq_38759939/article/details/81779138