Java教程
Java标识符与关键字
Java变量
Java数据类型
Java运算符
Java控制语句
Java方法
Java面向对象
Java对象的创建和使用
Java封装
Java中static和this
Java继承
Java方法覆盖和多态
Java super
Java基础练习题

Java选择语句if

选择语句又称为分支语句,它通过对给定的条件进行判断,从而决定执行两个或多个分支中的哪一支。因此,在编写选择语句之前,应该首先明确判断条件是什么,并确定当判断结果为“真”或“假”时应分别执行什么样的操作/算法。在Java语言中选择语句主要提供了两个,一个是if语句,另一个则是switch语句,我们先来看if语句。

if语句的编写方式我归纳为以下四种,请看下图:

if语句语法格式

图6-1:if语句语法格式

if语句是非常简单容易理解的,if被翻译为如果,else被翻译为其它,我们针对以上第二种写法进行说明:如果布尔表达式的结果是“真”,则执行它后面的分支,反之则执行else对应的分支。好比说“如果外面下雨了(真),出门则拿一把雨伞,反之则不带雨伞”。再比如“如果你吃饱了(真)就不需要再吃了,反之则需要继续吃东西”。那么以上两个业务用代码应该如何实现呢?请看下面程序:

boolean raining = false;
if(raining){
	System.out.println("外面下雨了,出门记得带一把伞哦!");
}else{
	System.out.println("天气不错哦!");
}
boolean eatFull = true;
if(eatFull){
	System.out.println("吃的好饱啊!");
}else{
	System.out.println("还没有吃饱,再来份米饭!");
}

上图中第一种写法对应的原理图:

Java技术架构

图6-2:6-1图中第一种写法对应的原理图

上图中第二种写法对应的原理图:

Java应用

图6-3:6-1图中第二种写法对应的原理图

上图中第三种写法对应的原理图:

Java编程

图6-4:6-1图中第三种写法对应的原理图

上图中第四种写法对应的原理图:

Java技术架构

图6-5:6-1图中第四种写法对应的原理图

通过以上原理的分析,我们可以得出if语句的任何一种形式在执行的时候只要有一个分支执行,则所对应的整个if语句就全部结束了,换句话说,对于一个独立的完整的if语句来说,最多只能有一个分支执行。

另外,我们可以得出“图6-1”中的四种写法,其中第二种和第四种都带有else分支,所以这两种写法我们可以确保肯定会有一个分支执行,另外两种写法则无法保证,也就是说第一种和第三种这两种写法可能一个分支都不会执行,这两种写法的分支是否执行取决于条件是否为true。

还有,Java语言中有这样一条规定:当分支中只有一条java语句话,大括号可以省略不写,如以下程序:

boolean sex = true;
if(sex){
	System.out.println("男");
}else{
	System.out.println("女");
}
//也可以这样写
if(sex)
	System.out.println("男");
else
	System.out.println("女");

虽然大括号可以省略,但是大家编写程序的时候一定要小心,分析以下程序错在哪里?

if(sex)
	System.out.println("男");
	System.out.println("hello world!");
else
	System.out.println("女");

显然if是没有任何问题的,输出“男”也是没问题的,输出“hello world!”也是正常的,只不过负责输出“hello world!”的那一行代码不在if语句的分支当中,那么下面的else则缺少了if语句而编译报错。换句话说,else以上的代码都没有问题,错误出现在else缺少了if。

虽然java规定当分支中只有一条java语句的话大括号可以省略,但是为了程序具有很强的可读性,所以建议在实际开发中还是不要省略大括号会比较好。

那么,接下来我们给大家列举几个if语句的案例,帮助大家更好的理解和运用if语句。

示例代码1:业务背景:根据用户输入不同的数字来判断用户不同性别,当输入1时性别为男,当输入0时性别为女,输入其它则不合法。

java.util.Scanner scan = new java.util.Scanner(System.in);
System.out.print("请输入数字:");
int i = scan.nextInt();
if(i == 1){
	System.out.println("性别:男");
}else if(i == 0){
	System.out.println("性别:女");
}else{
	System.out.println("对不起,您输入不合法!");
}

示例代码2:业务背景:键盘接收一个学生的成绩,范围在[0-100],根据成绩判断等级,[90-100]等级为“优秀”,[80-90)等级为“良好”,[70-80)等级为“中等”,[60-70)等级为“及格”,[0-60)等级为“大笨蛋”,输入其它数字表示成绩不合法。

java.util.Scanner scan = new java.util.Scanner(System.in);
System.out.print("输入考试成绩:");
int score = scan.nextInt();
if(score < 0 || score > 100){
	System.out.println("对不起,您输入的成绩不合法!");
}else if(score >= 90 && score <= 100){
	System.out.println("成绩等级:优秀");
}else if(score < 90 && score >= 80){
	System.out.println("成绩等级:良好");
}else if(score < 80 && score >= 70){
	System.out.println("成绩等级:中等");
}else if(score < 70 && score >= 60){
	System.out.println("成绩等级:及格");
}else if(score < 60 && score >= 0){
	System.out.println("成绩等级:大笨蛋");
}

对于初学者来说以上程序是可以的,但是对于老程序员来说,以上的代码就太冗余了,我们将其进行优化,看以下代码:

java.util.Scanner scan = new java.util.Scanner(System.in);
System.out.print("输入考试成绩:");
int score = scan.nextInt();
String grade = "大笨蛋";
if(score < 0 || score > 100){
	grade = "对不起,您输入的成绩不合法!";
}else if(score >= 90){
	grade = "优秀";
}else if(score >= 80){
	grade = "良好";
}else if(score >= 70){
	grade = "中等";
}else if(score >= 60){
	grade = "及格";
}
System.out.println("成绩等级:" + grade);

通过以上程序我们可以了解到一个功能的实现代码有多种编写形式,大家在学习的时候千万别机械性的一行一行对抄代码,实际上这种学习方法是非常痛苦,并且低效的,软件开发主要培养的是编程思想/编程思路,使用编程的思路解决现实生活中的问题。当然,对于初学者来说我们不可能刚开始就写出简单而高效的程序,这需要不断的模仿,不断的积累,尤其我们可以多参考高手写的程序(例如:JDK源代码),当你的代码达到一定量的时候,你就可以出山了。

示例代码3:业务背景:系统首先接收天气参数,1表示下雨天,0表示晴天,如果天气是晴天,输出“走起,一起出去玩耍喽!”,当天气是下雨天,则继续接收性别参数,1表示男,0表示女,当性别为女,则拿一把小花伞出去玩,当性别为男,则拿一把大黑伞出去玩。

java.util.Scanner scann = new java.util.Scanner(System.in);
System.out.print("请输入天气指数,1表示下雨天,0表示晴天:");
int weather = scann.nextInt();
if(weather == 1){
	System.out.print("请再输入您的性别,1表示男,0表示女:");
	int sex = scann.nextInt();
	if(sex == 0){
		System.out.println("女士,外面下雨了,您需要带一把小花伞");
	}else if(sex == 1){
		System.out.println("哥们,外面下雨了,您需要带一把大黑伞");
	}else{
		System.out.println("对不起,您输入性别参数出错了!");
	}
}else if(weather == 0){
	System.out.println("走起,一起出去玩耍喽!");
}else{
	System.out.println("对不起,您输入天气参数出错了!");
}

运行结果如下图所示:

if语句嵌套演示

if语句嵌套演示

图6-6:if语句嵌套演示

通过以上的程序我们得知,if语句是可以进行嵌套使用的,也就是说if语句的某个分支当中还可以继续编写其它if语句。实际上所有的控制语句都是可以进行嵌套使用的。语句嵌套这个知识点本来是不需要拿来进行特殊强调的,专门强调之后反而会让初学者特殊对待,我希望大家不要特殊对待嵌套。虽然被嵌套的是一个控制语句,但这个控制语句也是一段普通的java程序,你说呢!如下图:

控制语句嵌套

图6-7:控制语句嵌套

总之,选择语句之if语句,在实际开发中使用频率非常高,大家一定要掌握if语句的编写方式以及运行原理,也可以自己想一些现实生活中的小例子加以练习。 

全部教程