3.JAVA基础(流程控制语句 if,switch)

1.流程控制语句

流程控制语句分为顺序结构,选择结构,循环控制结构

顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构(默认),按照代码的先后顺序依次执行

总的来说:从上往下一次执行

选择结构(分支结构)
有特定的语法规则,代码能执行具体的逻辑运算进行判断,逻辑运算的结果有两个,所以产生选择执行不同的代码

java语言提供了两只选择结构语句:if语句与switch语句

2.if语句

if语句:用于处理判断,(如何。。否则)
第一种格式:
if(关系表达式){
语句体
}
如果关系表达式结果为true,则执行语句体,否则不执行语句体
第二种格式:
if(关系表达式){
语句体1
}else{
语句体2
}
如果关系表达式结果为true,则语句体1,否则执行语句体2
if(关系表达式){
语句体1
}else if(关系表达式2){
语句体2
}else{
语句体3
}

首先判断关系表达式1的结果如果为true,则执行语句体1,否则判断关系表达式2

在做一个程序的基本测试的时候,一定要考虑三个数据
正确数据,错误数据,边界数据,一定要对这三个数据都有处理

例1:

/*
 * if语句的第一种格式
 * if(关系表达式){
 * 	语句体
 * }
 * 执行流程:
 * 首先判断关系表达式的结果是true还是false
 * 如果是true就执行语句体
 * 如果是false就不执行语句体
 * 
 * 如果 则
 * */
public class SelectDemo {
	public static void main(String[] args) {
		int x = 3;

		// 如果是真就会执行里面的输出语句(语句体)
		if (x == 3) {
			System.out.println("x的值是3");
		}
		
		// 如果是假,不会执行里面的输出语句(语句体)
		if(x == 5){// false
			System.out.println("x的值是5");
		}
		
		// 因为他也是最基本的顺序结构,所以执行完if后会执行输出语句
		System.out.println("over");
	}
}

例2:

/*
 * if语句注意事项:
 * 1.比较表达式无论简单还是复杂,结果必须是boolean类型
 * 2.if语句控制的语句体如果是一条语句,大括号可以省略;如果是多条语句,就不能省略,建议永远不要省略
 * 3.分号:代表结束,一般来说有左括号就没有分号,有分号就没有左括号
 * */
public class IfDemo {
	public static void main(String[] args) {
		int x = 10;

		// 需求:判断x的值是不是10,如果是则输出提示
		if (x == 10) {
			System.out.println("x等于10");
		}

		// 需求:判断x是否大于5小于20 
		if (x > 5 && x < 20) {
			System.out.println("x大于5小于20");
		}
		System.out.println("----------------");
		
		int y = 100;
		if(y == 100){
			System.out.println("y等于100");
		}
			System.out.println("over");
		
		int z = 1000;
		if(z != 1000);// 分号代表结束,所以这个地方就代表if语句结束了,其实这里是有语句体的,只不过是空语句
		{// 代码块,暂时可以当做正常的程序执行
			System.out.println("z的值不是1000");
		}
		// 严格按照格式来,准保你不会错处
		/*
		 * if(x==5){
		 * }
		 * */
	}
}

例3:

/*
 * if(关系表达式){
 * 	语句体1
 * }else{
 * 	语句体2
 * }
 * 
 * 执行流程:
 * 首先判断关系表达式看其结果是true还是false
 * 如果是true则执行语句体1
 * 如果是false则执行语句体2
 * 不管是执行语句体1还是语句体2都不影响其他代码的运行
 * */
public class IfDeme2 {
	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");
		}
	}
}

例4:

/*
 * 需求:键盘录入成绩,判断并输出成绩的等级
 * 100-90 优秀
 * 89-80 好
 * 79-70 良
 * 69-60 及格
 * 59-0 不及格
 * 
 * 分析:
 * 键盘录入成绩就要使用Scanner对象录入数据
 * 用if语句判断成绩是否在100-90之间
 * 如果是则输出优秀
 * 否则继续判断下一个等级是否成立
 * 如果都不是那么就提示成绩输入错误
 * 
 * 步骤:
 * a.创建Scanner对象,键盘录入数据
 * b.用if语句判断成绩是否在100-90之间
 * 	如果是则输出优秀
 * 	否则继续判断下一个等级是否成立
 * 	如果都不是那么就提示成绩输入错误
 * */
public class IfDemo3 {
	public static void main(String[] args) {
		// a.创建Scanner对象,键盘录入数据
		Scanner sc = new Scanner(System.in);

		System.out.println("请输入你的考试成绩");
		int score = sc.nextInt();

		// b.用if语句判断成绩是否在100-90之间
		if (score <= 100 && score >= 90) {// true
			// 如果是则输出优秀
			System.out.println("优秀");
		} else if (score <= 89 && score >= 80) {
			System.out.println("好");
		} else if (score <= 79 && score >= 70) {
			System.out.println("良");
		} else if (score <= 69 && score >= 60) {
			System.out.println("及格");
		} else if (score <= 59 && score >= 0) {
			System.out.println("不及格");
		} else {
			// 如果都不是那么就提示成绩输入错误
			System.out.println("成绩输入错误");
		}
	}
}

例5:

public class IfDemo4 {
	public static void main(String[] args) {
		int a = 10;
		int b = 20;
		int c = 30;
		int max;

		// max = a > b ? (a > c ? a : c) : (b > c ? b : c);
		// System.out.println("max:" + max);
		
		// if语句嵌套
		if (a > b) {
			if (a > c) {
				max = a;
			} else {
				max = c;
			}
		} else {
			if (b > c) {
				max = b;
			} else {
				max = c;
			}
		}
		System.out.println("max:" + max);
	}
}

例6:

/*
 * 需求:键盘录入 判断一个数是奇数还是偶数
 * 分析:
 * 	除以二除不断的则是奇数 %2=1
 * 	除以二除的断则是偶数 %2=0
 * 步骤:
 * a.创建Scanner对象,接收用户录入的数据
 * b.判断这个数模二等于0吗?
 * 	如果等于0则是偶数
 * 	如果不等于0则奇数
 * */
public class IfTest {
	public static void main(String[] args) {
		// a.创建Scanner对象,接收用户录入的数据
		Scanner sc = new Scanner(System.in);
		
		System.out.println("请输入要判断的值");
		int x = sc.nextInt();
		
		// b.判断这个数模二等于0吗?
		if(x%2 == 0){
			// 如果等于0则是偶数
			System.out.println("这个数是偶数");
		}else{
			// 如果不等于0则奇数
			System.out.println("这个数是奇数");
		}
	}
}

例7:

/*
 * 需求:求两个数的最大值
 * 分析:
 * 	拿第一个数和第二个进行比较
 * 	如果第一个数大于第二个数则第一个数是最大值
 * 	否则第二个数是最大值
 * 步骤:
 * 	a.判断第一个数是否大于第二个数
 * 		如果是则第一个数是最大值
 * 		如果不是则第二个数是最大值
 * */
public class IfTest2 {
	public static void main(String[] args) {
		int a = 1;
		int b = 2;
		int max;
		
		// a.判断第一个数是否大于第二个数 a = b
		if(a>b){// true
			max = a;
		}else{// false
			max = b;
		}
		
		System.out.println("max:"+max);
		
		// 用三元改进
		max = a>b?a:b;
		System.out.println("max:"+max);
		/*
		 * 三目运算符可以用来改进一些if语句,但是不是所有的都可以改进,因为三目运算符是一个运算符,运算符的操作完成后是要有一个结果的
		 * 所有说三目运算符能够实现的,都可以用if语句实现 ,if语句能实现的不一定能用三目运算符改进
		 * 
		 * 什么时候用三目运算符,什么时候用if呢?
		 * 如果是需要得出一个结果值的逻辑处理,用三目
		 * 如果是复杂点的逻辑判断用if
		 * */
	}
}

2.switch语句

switch(表达式int类型){
	case 值1:
		语句块;
		break;
	case 值2:
		语句块;
		break;
	default:
		语句块;
		break;
}

格式解释:
switch:表示这个是switch选择结构
表达式:表示这个地方的取值是有限定的
byte,short,int,char
jdk5以后可是枚举,jdk7以后可以是字符串
case:后面跟的是也要和表达式进行比较的值
语句块:要执行的代码块
break:表示中断,结束,可以控制switch语句的结束
default:当所有的值都和表达式不匹配的时候,就执行default控制的语句,其实他就相当于if语句里面的else

执行流程
首先计算出表达式的值,任何和case的值依次比较,一旦拥有对应的值就执行相应的语句,再执行过程遇到break就会结束

注意事项:
case后面只能常量,不能是变量,而且多个case的值不能出现相同的
break可以省略,但是不建议,因为结构可能不是我们想要的,会出现一个一个现象:case穿透
default可以省略,但是不建议,因为它的作用是对不正确的情况给出提示
switch结束条件:遇到break,执行到末尾结束

例:

public class SwitchDemo {
	public static void main(String[] args) {
		System.out.println("魔镜魔镜,这个世界上最帅的人是谁?");
		System.out.println("1:一个,2:coco,3:小冉");

		Scanner sc = new Scanner(System.in);
		int x = sc.nextInt();

		// 做单选题功能
		switch (x) {
		case 1:
			System.out.println("选择正确,你这个魔镜是真的");
			break;
		case 2:
			System.out.println("就问你抗不抗摔");
			break;
		case 3:
			System.out.println("就问你抗不抗摔");
			break;
		default:
			System.out.println("没有该选项");
			break;
		}
	}
}

3.语句的使用

if语法的使用场景:
1.针对结构是boolean类型的判断
2.针对一个范围的判断
3.针对几个常量值的判断

switch语句
1.针对选择的时候进行判断,经典:单选。针对常量值的判断

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值