if条件语句

if条件语句是一个重要的编程语句,它用于告诉程序在某个条件成立的情况下执行某段程序。而在另一种情况下执行另外的语句。

使用if条件语句,可选择是否要执行紧跟在条件之后的那个语句。关键字if之后是作为条件的“布尔表达式”,如果该表达式返回的结果为true,则执行其后的语句;若为false,则不执行if条件之后的语句。if条件语句可分为简单的if条件语句、ifelse语句和ifelse if多分支语句。

1.简单的if条件语句

简单的if条件语句是条件语句的一种形式,它针对某种条件做出相应的处理。通常表现为“如果满足某种条件,就进行某种处理”。例如,聪的妈妈对聪说“如果你这次考试得100分,星期天就带你去公园玩”。这句话通过伪代码描述的算法如下:

如果聪考试得100

      星期天带聪去公园玩

在伪代码描述的算法中,如果相当于Java中的if关键字,所以将上面算法中的“如果”转换成if,并且将“聪考试得100分”用一对小括号起来,再将“星期天带聪去公园玩”用一对大括号起来就可以得出以下格式的代码:

if(考试得100){

      星期天带聪去公园玩

}

实际上,上面代码就是简单的if条件语句,其语法格式如下:

if(布尔表达式){

  语句序列

}

布尔表达式:必要参数。表示它最后返回的结果必须是一个布尔值,它可以是一个单纯的布尔变量或常量,或者使用关系或布尔运算符的表达式。

语句序列:可选参数。可以是一条或多条语句,当表达式的值为true时执行这些语句。如语句序列中仅有一条语句,则可以省略条件语句中的大括号。

  语句序列中只有一条语句。实例代码如下:

int a = 100;

if (a == 100)

      System.out.print("a的值是100");

说明:虽然ifelse语句后面的复合语句块只有一条语句,省略“{ }”并无语法错误,但为了增强程序的可读性最好不要省略。

如果条件语句后的语句序列省略时,则可以保留外面的大括号,也可以省略大括号。然后在末尾添加分号“;”,如下所示的两种情况都是正确的:

省略了if条件表达式中的语句序列,实例代码如下:

boolean a = false;

if (a)

      ;

boolean b = false;

if (b) {

}

简单的if条件语句的执行过程如图1所示。

 

    1  if条件语句的执行过程

  在项目中创建类Getif,在主方法中定义整型变量。使用条件语句来判断两个变量的大小来决定输出结果。

public class Getif {                                                // 创建类

      public static void main(String args[]) {              // 主方法

            int x = 45;                                                  // 声明int型变量x,并赋给初值

            int y = 12;                                                 // 声明int型变量y,并赋给初值

            if (x > y) {                                                 // 判断x是否大于y

                  System.out.println("变量x大于变量y"); // 如果条件成立,输出的信息

            }

            if (x < y) {                                                 // 判断x是否小于y

                  System.out.println("变量x小于变量y"); // 如果条件成立,输出的信息

            }

      }

}

运行结果如图2所示:

 

         2   运行结果

2ifelse语句

if...else条件语句是条件语句最常用的一种形式,它针对某种条件有选择地做出处理。通常表现为“如果满足某种条件,就进行某种处理,否则就进行另一种处理”。例如,要判断指定年的2月份的天数,通过伪代码描述的算法如下:

如果指定年为闰年

      2月份为29

否则

      2月份为28

在伪代码描述的算法中,如果相当于Java中的if关键字,否则相当于else关键字,所以将上面算法中的“如果”转换成if,并且将“指定年为闰年”用一对小括号起来,将“2月份为29天”用一对大括号起来,然后将“否则”转换成else,将“2月份为28天”用一对大括号起来就可以得出以下格式的代码:

if(指定年为闰年){

      2月份为29

}else{

      2月份为28

}

实际上,上面代码就是if...else条件语句,其语法格式如下:

if(表达式){

      若干语句

}else{

      若干语句

}

if后面()内的表达式的值必须boolean型的。如果表达式的值为true,则执行紧跟if语句的复合语句;如果表达式的值为false,则执行else后面的复合语句。ifelse语句的执行过程如果3所示:

 

    3  ifelse语句的执行过程

同简单的if条件语句一样,如果ifelse语句的语句序列中只有一条语句(不包括注释),则可以省略该语句序列外面的大括号。有时为了编程的需要,elseif后面的大括号里可以没有语句。

 在项目中创建Getifelse,在主方法中定义变量,并通过使用ifelse语句判断变量的值来决定输出结果。

public class Getifelse {

      public static void main(String args[]) {               //主方法

            int math = 95;                                            //声明int型局部变量,并赋给初值95

            int english = 56;                                          //声明int型局部变量,并赋给初值56

            if (math > 60) {                                          //使用if语句判断math是否大于60

                  System.out.println("数学及格了");          //条件成立时输出信息

            } else {

                  System.out.println("序没有及格");      //条件不成立输出的信息

            }

            if (english > 60) {                                       //判断英语成绩是否大于60

                  System.out.println("英语及格了");          //条件成立输出的信息

            } else {

                  System.out.println("英语没有及格");      //条件不成立输出的信息

            }

      }

}

运行结果如4所示

       4  运行结果

技巧:对于ifelse语句可以使用三元运算符对语句进行简化。如下面代码:

if(a > 0)

      b = a;

else

      b = -a;

可以简写成:

b = a > 0?a:-a;

上段代码为求绝对值的语句,如果a > 0,就把a的值赋值给变量b,否则将-a赋值给变量b。也就是问号“?”前面的表达式为真,则将问号与冒号之间的表达式的计算结果赋值给变量b,否则将冒号后面的表达式的计算结果赋值给变量b。使用三元运算符的好处是可以使代码简洁,并且有一个返回值。

3ifelse if多分支语句

if...else if多分支语句用于针对某一事件的多种情况进行处理。通常表现为“如果满足某种条件,就进行某种处理,否则如果满足另一种条件才执行另一种处理”。例如,聪聪和妈妈要从公园回家,如果步行,则需要30分钟,否则如果乘公交车,则需要10分钟,否则乘计程车只需要5分钟。针对该事件通过伪代码描述的算法如下:

如果步行

      需要30分钟

否则,如果乘公交车

      需要10分钟

否则

      乘计程车则只地要5分钟

上面的用伪代码描述的算法可以转换为以下Java代码:

if(步行){

      需要30分钟

}else if(乘公交车){

      需要10分钟

}else{

      乘计程车则只需要5分钟

}

实际上,上面代码就是if...else if多分支语句,其语法格式如下:

if(条件表达式1){

语句序列1

}

else if(条件表达式2){

  语句序列2

}

else if(表达式n){

      语句序列n

}

条件表达式1~条件表达式n:必要参数。可以由多个表达式组成,但最后返回的结果一定要为boolean类型。

语句序列:可以是一条或多条语句,当条件表达式1的值为true时,执行语句序列1,当条件表达式2的值为true时,执行语句序列2,依次类推。当省略任意一组语句序列时,可以保留其外面的大括号,也可以将大括号替换为分号“;”。ifelse if多分支语句的执行过程如图5所示:

 

                     5  ifelse if多分支语句流程图

 在项目中创建类GetTerm,在主方法中定义变量x使用ifelse if多分支语句通过判断x的值决定输出结果。

public class GetTerm {                                    // 创建主类

      public static void main(String args[]) {       // 主方法

            int x = 20;                                          // 声明int型局部变量

            if (x > 30) {                                        // 判断变量x是否大于30

                  System.out.println("a的值大于30"); // 条件成立的输出信息

            } else if (x > 10) {                              // 判断变量x是否大于10

                  System.out.println("a的值大于10,但小于30");                  // 条件成立的输出信息

            } else if (x > 0) {                                // 判断变量x是否大于0

                  System.out.println("a的值大于0,但小于10");                    // 条件成立的输出信息;

            } else {                                              // 当以上条件都不成立时,执行的语句块

                  System.out.println("a的值小于0"); // 输出信息

            }

      }

}

运行结果如图6所示。

 

    6  实例运行结果

在本实例中由于变量x20,条件“x > 30为假,程序向下执行判断下面的条件;条件“x > 10为真,所以执行条件“x > 10后面的程序块中语句。输出“a的值大于10,但小于30,之后退出if语句。

注意if语句只执行条件为真的命令语句,其他语句都不会都执行。