Java系列4—分支语句

分支语句

分支语句又称选择语句,当满足某个条件时,就进行某种操作。Java中有三种选择结构:

  • if…else if…else
  • switch

一、java语言中的if分支语句

java语言中有if,else if和else三个if语法,与python不同的是没有elif的用法,只有else if。

/*
	关于java语言中的if语句,属于选择结构,if语句又被称为分支语句/条件控制语句
		1、if语句的语法结构:四种编写方式
			第一种:
			    if(布尔表达式){
					java语句;
					java语句;
					...
				}
			第二种:
				if(布尔表达式){
					java语句;
					java语句;
					...
				}else{
					java语句;
					java语句;
					...
				}
			第三种:
				if(布尔表达式){
					java语句;
					java语句;
					...
				}else if(布尔表达式){
					java语句;
					java语句;
					...
				}else if(布尔表达式){
					java语句;
					java语句;
					...
				}else if(布尔表达式){
					java语句;
					java语句;
					...
				}......
			第四种:
				if(布尔表达式){
					java语句;
					java语句;
					...
				}else if(布尔表达式){
					java语句;
					java语句;
					...
				}else{
					java语句;
					java语句;
					...
				}

		2、重点:对于java中的if语句来说,只要一个分支执行,整个if语句全部结束
		3、注意:以上的第二种编写方式和第四种编写方式都带有else分支,
				 可以百分百保证一定会有分支执行。
		4、所有的控制语句都是可以嵌套使用的,只要是合理嵌套都行
				if(){
					if(){
						if(){
						}
					}
				}else{
					if(){
						if(){
						}
					}
				}
			注意:嵌套使用的时候代码格式要保证完美【该缩进的时候就要缩进】
		5、if语句的分支中有且只有一条语句时,大括号可以省略不写。
			if(true/false){
				java语句;
			}
			可以写成:
			if(true/false)  一条java语句;
			这种方式不推荐使用,能看懂就行
*/

public class iftest01
{
	public static void main(String[] args){

		//1、需求所在位置的五公里之内有肯德基的话,去KFC吃午饭
		double distance = 4.0;
		if(distance<5){
			System.out.println("去吃肯德基。");
		}
	}
}
练习1、:用户输入年龄,判断位于哪个年龄段:
/*
	需求:从键盘输入一个整数
		[0-5]		幼儿
		[6-10]		少儿
		[11-18]		青少年
		[19-35]		青年
		[36-55]		中年
		[56-150]	老年
*/

public class iftest02
{
	public static void main(String[] args){
		
		//1、接收键盘输入:年龄
		java.util.Scanner s = new java.util.Scanner(System.in);
		System.out.print("请输入您的年龄:");	//输入提示信息
		int age = s.nextInt();	//停下来等待用户输入,输入之后自动换行
		
		//2、根据需求进行业务逻辑判断
		String str = "老年";
		if(age<0 || age>150){
			str = "您输入的年龄不合法,年龄需要在【0-150】之间";
			System.out.println(str);
		}else{
			if(age<=5){
			str = "幼儿";
			}else if(age<=10){
				str = "少儿";
			}else if(age<=18){
				str = "青少年";
			}else if(age<=35){
				str = "青年";
			}else if(age<=55){
				str = "中年";
			}else if(age<=150){
				str = "老年";
			}

			System.out.println("您现在处于"+str+"阶段");
		}
	}
}
练习2:输入天气和性别进行判断
/*
	需求:从键盘输入一个整数
		[0-5]		幼儿
		[6-10]		少儿
		[11-18]		青少年
		[19-35]		青年
		[36-55]		中年
		[56-150]	老年
*/

public class iftest02
{
	public static void main(String[] args){
		
		//1、接收键盘输入:年龄
		java.util.Scanner s = new java.util.Scanner(System.in);
		System.out.print("请输入您的年龄:");	//输入提示信息
		int age = s.nextInt();	//停下来等待用户输入,输入之后自动换行
		
		//2、根据需求进行业务逻辑判断
		String str = "老年";
		if(age<0 || age>150){
			str = "您输入的年龄不合法,年龄需要在【0-150】之间";
			System.out.println(str);
		}else{
			if(age<=5){
			str = "幼儿";
			}else if(age<=10){
				str = "少儿";
			}else if(age<=18){
				str = "青少年";
			}else if(age<=35){
				str = "青年";
			}else if(age<=55){
				str = "中年";
			}else if(age<=150){
				str = "老年";
			}
			System.out.println("您现在处于"+str+"阶段");
		}
	}
}
3、if后只有一条语句的用法
public class iftest05
{
	public static void main(String[] args){
		boolean sex = true;
		if(sex){
			System.out.println("男");
		}else{
			System.out.println("女");
		}
		sex = false;
		if(sex) System.out.println("男"); else System.out.println("女");

		//-----------------------------------------
		//以下代码会报错:错误: 有 'if', 但是没有 'else'
		
		//原因:if后边可以不加大括号,紧跟着的那句话包含在if里面,
		//导致if跟else之间有其他语句
		/*
		if (sex)
			System.out.println("男");
			System.out.println("1111111111111");
		else
			System.out.println("女");
		*/
	}
}

二、switch语句的用法

练习1:使用switch判断日期:
/*
	关于switch语句:
		1、switch语句也属于选择结构,也是分支语句
		2、switch语句的语法结构,case标签内容不能重复:
			一个完整的switch语句应该这样编写:
				switch(int或String类型的字面值或变量){
					case int或String类型的字面值或变量:
						java语句;
						...
						break;
					case int或String类型的字面值或变量:
						java语句;
						...
						break;
					case int或String类型的字面值或变量:
						java语句;
						...
						break;
					default:
						java语句;
						....		
				}
		3、switch语句执行原理:
			switch后面小括号当中的"数据"和case后面的"数据"进行一一匹配,匹配成功的分支执行
			按照自上而下的顺序依次匹配。

		4、匹配成功的分支执行,分支当中有break语句时,整个switch语句终止。

		5、匹配成功的分支执行,分支当中没有break语句时,直接进入下一个分支执行(不进行匹配)。
			这种现象称为case穿透现象。【为防止穿透现象每个case语句都需要提供break语句】

		6、所有的case都不匹配,有default时,走default分支的内容。

		7、switch后面和case后面只能是int或String类型的数据,不能探测其他类型。
			* byte、short、char也可以直接写到switch和case后面,因为他们可以进行自动类型转换。
			  byte、short、char可以自动转换成int类型。
			* JDK6的,switch和case后面只能探测int类型
			* JDK7之后包括7,引入新特性,switch关键字和case关键字后面可以探测int或String类型。
		
		8、case可以合并:
			int i =10;
			switch(i){
			case 1: case 2: case 3:
				System.out.println("Hello World!")
			}
*/

public class switchTest01
{
	public static void main(String[] args){

		//当输入10时,这种情况就是case穿透,没有遇到break时会一直向下运行
		/*
		java.util.Scanner i = new java.util.Scanner(System.in);

		System.out.print("请输入年龄:");
		int age = i.nextInt();

		switch(age){
			case 10:
				System.out.println("未成年!");
			case 20:
				System.out.println("已经成年");
		}
		*/
		
		//较完整的switch语句

		/*
			接收一个用户输入:
			1表示星期一
			2表示星期二
			...
			7表示星期日
		*/
		java.util.Scanner s = new java.util.Scanner(System.in);
		System.out.print("请输入数字:");
		int num = s.nextInt();
		String str = "输入有误";
		switch (num){
			case 1:
				str = "星期一";
				break;
			case 2:
				str = "星期二";
				break;
			case 3:
				str = "星期三";
				break;
			case 4:
				str = "星期四";
				break;
			case 5:
				str = "星期五";
				break;
			case 6:
				str = "星期六";
				break;
			case 7:
				str = "星期日";
				break;
			default:
				str = "输入有误";
				break;
		}
		System.out.println(str);
		
		// case合并
		switch (num){
			case 1: case 0:
				str = "星期一";
				break;
			case 2:
				str = "星期二";
				break;
			case 3:
				str = "星期三";
				break;
			case 4:
				str = "星期四";
				break;
			case 5:
				str = "星期五";
				break;
			case 6:
				str = "星期六";
				break;
			case 7:
				str = "星期日";
				break;
			default:
				str = "输入有误";
				break;
		}
		System.out.println(str);
	}
}
练习2:判断String类型:
public class switchTest02
{
	public static void main(String[] args){

		//从键盘输入
		java.util.Scanner s = new java.util.Scanner(System.in);
		System.out.print("请输入星期几:");
		String dayOfweek = s.next();
		
		//可以传字符串,case和default的位置不会影响结果
		switch(dayOfweek){
			case "星期一":
				System.out.println(1);
				break;
			default:
				System.out.println("输入不合法");
				break;
			case "星期二":
				System.out.println(2);
				break;

		}
	}
}
练习3:判断字符型
public class switchTest03
{
	public static void main(String[] args){

		//char a = 'A';
		char b = 'B';
		//char c = 'C';

		switch(b){
			case 'A':
				System.out.println("A");
				break;
			case 66:
				System.out.println("B");
				break;
			case 'C':
				System.out.println("C");
				break;
			default:
				System.out.println("输入错了");
				break;
		}
	}
}
练习4:使用switch搭建简易计算器:
/*
	实现计算器当中的
		+
		-
		*
		/
		%
	实现思路:
		1、所有数据从键盘输入
		2、使用switch语句记性判断
		3、需要从控制台输入三次
			* 第一个数字
			* 运算符
			* 第二个数字
	最终效果:
		欢迎使用简易计算器系统:
		请输入第一个数字:10
		请输入运算符:+
		请输入第二个数字:20
		运算结果:10 + 20 = 30
*/

public class switchTest04
{
	public static void main(String[] args){
		System.out.println("欢迎使用简易计算机系统:");

		java.util.Scanner f = new java.util.Scanner(System.in);
		System.out.print("请输入第一个数字:");
		int num1 = f.nextInt();

		System.out.print("请输入运算符:");
		String operator = f.next();

		System.out.print("请输入第二个数字:");
		int num2 = f.nextInt();

		int result = 0;
		switch(operator){
			case "+":
				result = num1+num2;		
				break;
			case "-":
				result = num1-num2;
				break;
			case "*":
				result = num1*num2;
				break;			
			case "/":
				result = num1/num2;
				break;
			case "%":
				result = num1%num2;
				break;
			default:
				System.out.println("输入有误");	
		}
		System.out.println(num1 + operator + num2 + "=" + result);
	}
}
练习5:使用switch判断成绩区间
/*
	假设系统给定考生成绩,请判断该考生的成绩等级:
		1、有效成绩范围:【0-100】
		2、考试成绩可能带有小数
		3、考试成绩和等级之间对照关系:
			[90-100]     A
			[80-90]      B
			[70-80]      C
			[60-70]      D
			[0-60]       E
*/

public class switchTest05
{
	public static void main(String[] args){
	
		java.util.Scanner s = new java.util.Scanner(System.in);
		System.out.print("请输入成绩:");
		
		// 除以10得到范围
		int score = s.nextInt()/10;
		System.out.println(score);
		
		String result = "输入有误";
		switch(score){
			case 9: case 10:
				result = "A";
			case 8:
				result = "B";
			case 7:
				result = "C";
			case 6:
				result = "D";
			default:
				result = "E";
		}	
		System.out.println(result);
	}
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值