流程控制语句

流程控制语句的概述

流程控制语句:在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。也就是说程序的流程对运行结果有直接的影响。所以,我们必须清楚每条语句的执行流程。而且,很多时候我们要通过控制语句的执行顺序来实现我们要完成的功能。
流程控制语句的分类:顺序结构语句 选择结构语句 循环结构语句

顺序结构语句

顺序结构语句:是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。总的来说:写在前面的先执行,写在后面的后执行

java流程控制语句有哪三类 java流程控制语句实验总结_数据

选择结构

选择结构也被称为分支结构
选择结构有特定的与法规则,代码执行具体的逻辑运算判定,逻辑运算的结果有两个,所产生选择,按照不同的选择执行不同的代码
java语言提供了两种选择结构语句:if语句 switch语句

if语句

if语句有三种格式

格式1

if(关表达系式){

语句体;

}

执行流程

首先判断关系表达式看其结果是true还是false

如果是true就执行语句体

如果false就不执行语句体

java流程控制语句有哪三类 java流程控制语句实验总结_System_02


注意

关系表达式无论简单还是复杂,结果必须是boolean类型

if语句控制的语句如果是一条语句,大括号可以省略;如果是多条语句,就不能省略.建议永远不要省略

一般来说:有左大括号就没有分号,有分号就没有左大括号

class IfDemo{
	public static void main(String[] args){
		int x=10;
		if(x>=5){
			System.out.println("x大于等于5");
		}
		int y=100;
		//if (y<=50 || y>=100);{ //这种写法if语句没有任何意义
		if (y<=50 || y>=100){
			System.out.println("x小于等于50或者x大于等于100");
		}
	}
}

格式2

if(关系表达式){

语句体1;

}

else{

语句体2;

}

执行流程

首先判断关系表达式看其结果是true还是false

如果是true就执行语句体1

如果是false就执行语句体2

java流程控制语句有哪三类 java流程控制语句实验总结_数据_03


注意

我们前面讲解过三元运算符,它根据比较判断后,给出的也是两个结果,所以,这种情况和if语句的第二种格式很相似,他们在某些情况下应该是可以相互转换的.

if语句第二种格式和三元运算符:三元运算符的操作都可以使用if语句改进,反之不成立

什么时候不成立呢?

1.当if语句控制的语句体是一条输出语句的时候,就不成立。因为三元运算符是一个运算符,必须要求有一个结果返回。

2.而输出语句却不能作为一个返回结果。

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

格式3

if(关系表达式1) {

语句体1;

}else if (关系表达式2) {

语句体2;

}


else {

语句体n+1;

}

执行流程

首先判断关系表达式1看其结果是true还是false

如果是true就执行语句体1

如果是false就继续判断关系表达式2看其结果是true还是false

如果是true就执行语句体2

如果是false就继续判断关系表达式…看其结果是true还是false


如果没有任何关系表达式为true,就执行语句体n+1。

java流程控制语句有哪三类 java流程控制语句实验总结_数据_04


举例

键盘录入一个学生的成绩,判断学生成绩属于哪个等级

90 ~ 100 优秀

80 ~ 90 良好

70 ~ 80 一般

60 ~ 70 及格

0 ~ 60 不及格

import java.util.Scanner;
class IfDemo3{
	public static void main(String[] args){
		//创建键盘录入对象
		Scanner sc=new Scanner(System.in);
		//提示并录入数据
		System.out.println("请输入学生的成绩:");
		int a=sc.nextInt();
		if(a<0 || a>100){
			System.out.println("请输入合理的成绩");
		}
		else if(a>=90 && a<=100){
			System.out.println("优秀");
		}
		else if(a>=80 && a<90){
			System.out.println("良好");
		}
		else if(a>=70 && a<80){
			System.out.println("一般");
		}
		else if(a>=60 && a<70){
			System.out.println("及格");
		}
		else{
			System.out.println("不及格");
		}
	}
}
/*
设计程序:
			开发完成之后,进行自测,测试正确的数据,边界数据,以及错误的数据(不合法的数据,当前用户使用之后,应该
			用户一个更好的体验)
*/

if语句的嵌套

import java.util.Scanner;
class IfTest2{
	public static void main(String[] args){
		//创建键盘录入对象
		Scanner sc = new Scanner(System.in);
		
		//提示并录入数据
		System.out.println("请您输入第一个数据:") ;
		int a = sc.nextInt() ;
		System.out.println("请您输入第二个数据:") ;
		int b = sc.nextInt() ;
		System.out.println("请您输入第三个数据:") ;
		int c = sc.nextInt() ;
		
		//三元+第三方变量
		int temp = (a>b)? a:b ;
		int max = (temp >c) ? temp : c ;
		System.out.println("三个数据的最大值是:"+max);
		System.out.println("-------------------------") ;
		
		//if嵌套
		int max2;
		if(a>b){
			if(a>c){
				max2 = a ;
			}else{
				max2 = c ;
			}
		}else{
			//b大于a
			if(b>c){
				max2 = b ;
			}else{
				max2 = c ;
			}
		}
		
		System.out.println("三个数据的最大值是:"+max2);
	}
}
switch语句

switch语句格式:

switch(表达式) {

case 值1:

语句体1;

break;

case 值2:

语句体2;

break;


default:

语句体n+1;

break;

}

执行流程首先计算出表达式的值其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。

注意:switch语句可以表达的类型为byte short char int

JDK1.5及其以后可以表达枚举类型(enum)

JDK1.7及其以后可以表达String类型

long类型不可以作为switch中的表达式

java流程控制语句有哪三类 java流程控制语句实验总结_System_05


举例:

键盘录入数据,判断当前星期几

1,星期一

2,星期二

3,星期三

4,星期四

5,星期五

6,星期六

7,星期日

如果录入其他数据,提示"非法数据"
import java.util.Scanner ;
class SwitchDemo{
	public static void main(String[] args){
		
		//创建键盘录入对象
		Scanner sc = new Scanner(System.in) ;
		
		//提示并接收数据
		System.out.println("请您输入一个数据:") ;
		int week = sc.nextInt();
		switch(week){
		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 ;
		}
	}
}

switch语句的结束条件:遇到break,执行到程序的末尾.

case穿透性
在switch语句中,如果case的后面不写break,将出现穿透现象,也就是不会在判断下一个case的值,直接向后运
行,直到遇到break,或者整体switch结束。

class SwitchTest{
	public static void main(String[] args){
		int x = 3 ;
		int y = 4 ;
		switch (x){
			default :
				y++ ;
				break ;  
			case 1:
				y ++ ;
			case 2:
				y++ ;
		}
		//y的值是多少 5
		System.out.println("y:"+y) ;
		int a = 3 ;
		int b = 4 ;
		switch (a){
			default :
				b++ ;  //5
				
			case 1:
				b ++ ; //6
			case 2:
				b++ ;  // 7
		}
		//b的值是多少  7
		System.out.println("b:"+b);
		
	}
}

if语句和switch语句的区别
在做判断的时候,我们有两种选择,if语句和switch语句,那么,我们到底该如何选择使用那种语句呢?
if语句使用场景:
针对结果是boolean类型的判断
针对一个范围的判断
针对几个常量值的判断
switch语句使用场景:
针对几个常量值的判断