在if的语句块中,或者是在else语句块中,又包含了另外一个条件判断(可以是单分支、双分支、多分支),就构成了嵌套结构。
执行的特点:
(1) 如果是嵌套在if语句块中的,只有当外部的if条件满足,才会去判断内部的条件
(2) 如果是嵌套在else语句块中的,只有当外部的if条件不满足,进入else后,才会去判断内部的条件
从开发经验上讲,没有写过超过三层的嵌套if-else结构
注意:如果if-else中的执行语句块中只有一行执行语句,则此执行语句执行所在的一对{ }可以省略,但是不建议省略。
/*
案例:由键盘输入三个整数分别存入变量num1、num2、num3,对它们进行排序(使用 if-else if-else),并且从小到大输出。
*/
public class IfElse{
public static void main(String[] args){
int num1 = 5;
int num2 = 8;
int num3 = 12;
int max;
if(num1>=num2){
if(num3>num1){
System.out.println("num2,num1,num3");
}else if(num3<num1){
if(num3>num2){
System.out.println("num2,num3,num1");
}else{
System.out.println("num3,num2,num1");
}
}
}else if(num1<num2){
if(num3>num2){
System.out.println("num1,num2,num3");
}else if(num3 < num2){
if(num3 > num1){
System.out.println("num1,num3,num2");
}else{
System.out.println("num3,num1,num2");
}
}
}
}
}
练习1:
//对下列代码,若有输出,指出输出结果。
int x = 4;
int y = 1;
if (x > 2) {
if (y > 2)
System.out.println(x + y);
System.out.println("atguigu");
} else
System.out.println("x is " + x);
//输出atguigu 因为if省略掉了{},所以只有一条执行语句,所以输出System.out.println("atguigu");
练习2:
boolean b = true;
//如果写成if(b=false)能编译通过吗?如果能,结果是? //能 结果是c
if(b == false) //建议:if(!b)
System.out.println("a");
else if(b)
System.out.println("b"); //输出b
else if(!b)
System.out.println("c");
else
System.out.println("d");
练习3:
定义两个整数,分别为small 和 big,如果第一个整数small大于第二个整数big,就交换。输出显示small和big变量的值。
public class MaxValue{
public static void main(String[] args){
int small = 5;
int big = 2;
int temp;
if(small > big){
temp = small;
small = big;
big = temp;
System.out.println(small+","+big);
}else
System.out.println(small+","+big);
}
}
**练习4:**小明参加期末Java考试,通过考试成绩,判断其Java等级,成绩范围[0,100]
//方法一:
public class JavaTest{
public static void main(String[] args){
int score = 88;
if(score>=90&&score<=100){
System.out.println("优秀");
}else if(score>=80&&score<90){
System.out.println("好");
}else if(score>=70&&score<80){
System.out.println("良");
}else if(score>=60&&score<70){
System.out.println("及格");
}else
System.out.println("不及格");
}
}
//方法二:
public class JavaTest{
public static void main(String[] args){
int score = 88;
if(score>=90&&score<=100){
System.out.println("优秀");
}else if(score>=80){
System.out.println("好");
}else if(score>=70){
System.out.println("良");
}else if(score>=60){
System.out.println("及格");
}else{
System.out.println("不及格");
}
}
}
**练习5:**编写程序,声明2个int型变量并赋值。判断两数之和,如果大于等于50,打印“hello world!”
class addTest{
public static void main(String[] args){
int a = 30;
int b = 23;
int add = a + b;
if(add>=50){
System.out.println("Hello World");
}
}
}
**练习 6:**编写程序,声明2个double型变量并赋值。判断第一个数大于10.0,且第2个数小于20.0,打印两数之和。否则,打印两数的乘积。
class AddTest2{
public static void main(String[] args){
double d1 = 12.1;
double d2 = 22.6;
if(d1 > 10.0 && d2 < 20.0){
double d3 = d1 + d2;
System.out.println(d3);
}else{
double d4 = d1 * d2;
System.out.println(d4);
}
}
}
**练习7:**判断水的温度
如果大于95℃,则打印“开水”;
如果大于70℃且小于等于95℃,则打印“热水”;
如果大于40℃且小于等于70℃,则打印“温水”;
如果小于等于40℃,则打印“凉水”。
public class water{
public static void main(String[] args){
int waterTemperature = 88;
if(waterTemperature > 95){
System.out.println("开水");
}else if(waterTemperature > 70 && waterTemperature =< 95){
System.out.println("热水");
}else if(waterTemperature > 40 && waterTemperature =< 70){
System.out.println("温水");
}else if(waterTemperature <= 40){
System.out.println("凉水");
}
}
}