java选择结构

在实际生活中经常需要做出一些判断,比如开车来到一个十字路口,就需要对红绿灯进行判断,如果前面是红灯,就停车等候,如果是绿灯,就通行。Java中有一种特殊的语句叫做选择语句,它也需要对一些条件做出判断,从而决定执行哪一段代码。选择语句分为if条件语句和switch条件语句。

if条件语句

1.if语句

if语句是指如果满足某种条件,就进行某种处理。例如,小明妈妈跟小明说“如果你考试得了100分,星期天就带你去游乐场玩”。这句话可以通过下面的一段伪代码来描述。

如果小明考试得了100分
    妈妈星期天带小明去游乐场

在上面的伪代码中,“如果”相当于Java中的关键字if,“小明考试得了100分”是判断条件,需要用()括起来,“妈妈星期天带小明去游乐场”是执行语句,需要放在{}中。修改后的伪代码如下:

if (小明考试得了100分) {
	妈妈星期天带小明去游乐场
}

通过上面的伪代码可以总结出if语句的格式:

if (条件语句){ 
	代码块
}

流程图如下:

接下来通过一个案例学习if语句的具体用法。

public class Example07 {
	public static void main(String[] args) {
		int x = 5;
		if (x < 10) {
			x++;
		}
		System.out.println("x=" + x);
	}
}

 2.if…else语句

if…else语句是指如果满足某种条件,就进行某种处理,否则就进行另一种处理。例如,要判断一个正整数的奇偶,如果该数字能被2整除则是一个偶数,否则该数字就是一个奇数。

if…else语句具体语法格式如下: if (判断条件){     执行语句1     ... } else{     执行语句2     ... }

流程图如下:

 接下来通过一个案例实现判断奇偶数的程序。

public class Example08 {
	public static void main(String[] args) {
		int num = 19;
		if (num % 2 == 0) {
			// 判断条件成立,num被2整除
			System.out.println("num是一个偶数");
		} else {
			System.out.println("num是一个奇数");
		}
	}
}

3.if…else if…else语句

if…else if…else语句用于对多个条件进行判断,进行多种不同的处理。例如,对一个学生的考试成绩进行等级划分,如果分数大于80分,则等级为优;如果分数大于70分,则等级为良;如果分数大于60分,则等级为中;如果分数小于60分,则等级为差。 

if…else if…else语句格式:

if (判断条件1) {
	执行语句1
} 
else if (判断条件2) {
	执行语句2
}
...
else if (判断条件n) {
	执行语句n
}
else {
	执行语句n+1
}

流程图如下:

接下来通过一个案例演示if…else if…else语句的用法,该案例实现对学生考试成绩进行等级划分的程序。

public class Example09 {
	public static void main(String[] args) {
		int grade = 75; 							// 定义学生成绩
		if (grade > 80) {
			// 满足条件 grade > 80
			System.out.println("该成绩的等级为优");
		} else if (grade > 70) {
			// 不满足条件 grade > 80 ,但满足条件 grade > 70 
			System.out.println("该成绩的等级为良");
		} else if (grade > 60) {
			// 不满足条件 grade > 70 ,但满足条件 grade > 60 
			System.out.println("该成绩的等级为中");
		} else {
			// 不满足条件 grade > 60 
			System.out.println("该成绩的等级为差");
		}
	}
}

 三元运算符

Java提供了一个三元运算符,可以同时操作三个表达式。三元运算符语法格式如下所示:

判断条件 ? 表达式1 : 表达式2

在上述语法格式中,当判断条件成立时,计算表达式1的值作为整个表达式的结果,否则计算表达式2的值作为整个表达式的结果。

使用三元运算符时需要注意以下几点:

(1)条件运算符“?”和“:”是一对运算符,不能分开单独使用。

(2)条件运算符的优先级低于关系运算符与算术运算符,但高于赋值运算符。

(3)条件运算符可以进行嵌套,结合方向自右向左。例如,a>b?a:c>d?c:d应该理解为a>b?a:(c>d?c:d),这也是条件运算符的嵌套情形,即三元表达式中的表达式2又是一个三元表达式。

switch条件语句

switch 条件语句也是一种很常用的选择语句,和if条件语句不同,它只能针对某个表达式的值做出判断,从而决定程序执行哪一段代码。例如,在程序中使用数字1~7表示星期一到星期天,如果想根据输入的数字输出对应中文格式的星期值,可以通过下面的一段伪代码来描述: 

用于表示星期的数字
	如果等于1,则输出星期一
	如果等于2,则输出星期二
	如果等于3,则输出星期三
	如果等于4,则输出星期四
	如果等于5,则输出星期五
	如果等于6,则输出星期六
	如果等于7,则输出星期天

上述伪代码,如果使用if…else语句实现,则代码太过繁琐,不便于阅读。为此,Java提供了switch语句实现这种需求,switch语句使用switch关键字描述一个表达式,使用case关键字描述和表达式结果比较的目标值,当表达式的值和某个目标值匹配时,就执行对应case下的语句。

switch (表达式){
	case 目标值1:
		执行语句1
		break;
	case 目标值2:
		执行语句2
		break;
	......
	case 目标值n:
		执行语句n
		break;
	default:
		执行语句n+1
		break;      
}

switch语句将表达式的值与每个case中的目标值进行匹配,如果找到了匹配的值,则执行对应case后面的语句;如果没找到任何匹配的值,则执行default后的语句。switch语句中的break关键字将在后面的小节中做具体介绍,此处,初学者只需要知道break的作用是跳出switch语句即可。

接下来通过一个案例来演示switch语句的用法,在该案例中,使用switch语句根据给出的数值输出对应中文格式的星期。

public class Example10{
	public static void main(String[] args) {
		int week = 5;
		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语句时,如果多个case条件后面的执行语句是一样的,则执行语句只需书写一次即可。例如,要判断一周中的某一天是否为工作日,同样使用数字1~7表示星期一到星期天,当输入的数字为1、2、3、4、5时就视为工作日,否则就视为休息日。

public class Example11 {
	public static void main(String[] args) {
		int week = 2;
		switch (week) {
			case 1:
			case 2:
			case 3:
			case 4:
			case 5:
			     // 当 week 满足值 1、2、3、4、5 中任意一个时,处理方式相同
				System.out.println("今天是工作日");
				break;
			case 6:
			case 7:
			     // 当 week 满足值 6、7 中任意一个时,处理方式相同
				System.out.println("今天是休息日");
				break;
		}
	}
}

注意:在JDK5之前,switch语句中的表达式只能是byte、short、char、int类型的值,如果传入其他类型的值,程序会报错。JDK5引入了新特性,enum枚举可以作为switch语句表达式的值;JDK7中也引入了新特性,switch语句可以接收一个String类型的值。

【案例2-2】  小明都可以买什么

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值