if语句与switch循环

IF语句使用

一个if语句由一个后跟一到多个语句的布尔表达式组成,其语法形式如下:

 

if(布尔表达式) {

//如果布尔表达式为true,就执行的语句

}

如果圆括号中的布尔表达式为true,就执行大括号中的语句。如果布尔表达式为false,那么就跳过大括号中的语句。在布尔表达式为false的情况下,控制流程将跳转到大括号之下的语句。

如下if使用示例

/*  IfDemo.java

  if语句的使用演示。

*/

public class IfDemo {

  public static void main(String [] args)  {

    int x = Integer.parseInt(args[0]);

    double half = 0.0;

    if(x != 0)     {

      half = x / 2.0;

      System.out.println(x + "/2 = " + half);

    }

    if(x == 0)     {

      System.out.println("x的值等于0");

    }

    int y = x * 5;

    char grade = 'F';

    if(y >= 85)     {

      grade = 'A';

    }

    if(y >= 70 && y < 85) grade = 'C';

    System.out.println("y = " + y + " , 成绩 = " + grade);

  }

}

    System.out.println("x的值等于0");

    }

    int y = x * 5;

    char grade = 'F';

    if(y >= 85)     {

      grade = 'A';

    }

    if(y >= 70 && y < 85) grade = 'C';

    System.out.println("y = " + y + " , 成绩 = " + grade);

  }

}

 


释义:在IfDemo程序中,有一段整数除以一半的代码。如果我们用x/2,因为2是一个整数字面量,被看作为int类型,那么x/2的结果就是个int类型的,这意味着余数会被丢弃。例如,19/2结果是9,而不是9.5。通过使用语句“x/2.0”,我们就可以强制x在除法计算发生前就被提升为double类型,因而不会丢失余数。例如,19/2.0结果就是9.5。

 

 

如果if语句后只有一条语句,那么if语句的大括号可以不要。例如,在前面的IfDemo程序中,下面的if语句就不需要大括号,因为该语句后面只有一条语句:

 

if(y >= 70 && y < 85)  grade = 'C';

在比较(y>=85)的if语句中,我们用了大括号,但是这不是必须的。

      1. if/else语句

一个if语句后可以跟上一个可选的else语句,用于在布尔表达式为false时执行。if/else语句的语法形式如下:

 

if(布尔表达式) {

//当布尔表达式为true时执行

}

else {

//当布尔表达式为false时执行

}

通过使用if/else语句,我们可以根据布尔表达式的值,确保要么是if块要么是else块被执行。

else块也可以包含另一个if语句,这样就创建了一系列if/else语句,但是只有一个if代码块被执行。语法形式类似如下格式:

 

if(布尔表达式) {

}

else if(布尔表达式) {

}

else if(布尔表达式) {

}

//等等,直到

else {

}

 

当使用如上格式的if/else语句时,最后的else块是可选的。代码清单3.2所示的StudentGrade程序演示了if/else控制结构的用法,在程序中对0-100之间的学生考试分数指定一个字母等级。演示该程序,并判断各种不同的考试分数的输出。

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  

/*  StudentGrade.java

  if/else语句的使用演示。

*/

 

public class StudentGrade {

   public static void main(String [] args) {

     int score = Integer.parseInt(args[0]);

     char grade;

     if(score >= 90) {

         grade = 'A';

         System.out.println("好样的!");

     }

     else if(score >= 80) {

       grade = 'B';

       System.out.println("不错");

     }

     else if(score >= 70 && score < 80) {

       grade = 'C';

     }

     else if(score >= 60) {

       grade = 'D';

     }

     else {

       grade = 'F';

       System.out.println("继续努力");

     }

     System.out.println("你的成绩等级为:" + grade);          

   }

}

在StudentGrade程序中,只有一个if/else块会被执行。注意,假如考试分数为92,那么所有的if语句都是true。但是,因为按顺序检测的,(x>=90)块先被检测为真,于是成绩等级被指定为'A',输出消息“好样的!”,控制流程随后跳出if/else结构,执行的下一条语句是显示“你的成绩等级为:A”的println()语句,而后续的布尔表达式都不会被检测。

 

switch语句

switch语句允许变量与多个值进行相等性检测,每个值被一个case语句语句调用和检测。一个switch语句的语法一般是如下形式:

 

switch(变量){  

  case 值 :

    //语句

    break;          //optional

  case 值 :

    //语句

    break;          //可选

    //可以有很多case语句

  default :          //可选

    //语句

}

如下的规则适用于switch语句:

  • switch语句中检测的变量只能是32位或更小的整数值,也就是说只能是byte、short、int和char类型(注:JDK7.0以后,变量可以是String类型)。
  • 在一个switch语句中可以有很多case语句。每个case后跟一个用于比较的值和一个冒号。
  • case后的值必须是与switch中的变量相同的数据类型,并且必须是常量或字面量。
  • 当变量的值等于case后的值时,该case语句后的语句开始执行,直到遇到break语句。
  • 当遇到break语句时,switch语句结束,控制流程跳转到该switch语句的下一行。
  • 并不是所有case语句中需要包含一个break语句。如果没有break语句,控制流程继续执行到下一个case语句,直到遇到break语句。
  • 一个switch语句可以有一个可选的default条件,一般出现在switch语句的末尾。如果所有case条件都是false,那么default条件可以用于执行某种任务。在default条件中不需要break语句。

通过一个示例来理解switch语句更为简单。代码清单3.3所示的CongratulateStudent程序用一个switch语句,根据学生的成绩等级,输出一条消息。main()方法中的第一条语句获取第一个命令行参数做为成绩等级。研究程序,判断各种成绩等级的输出结果。

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  

/*  CongratulateStudent.java

  switch语句的使用演示。

*/

 

public class CongratulateStudent {

public static void main(String[] args) {

char grade = args[0].charAt(0);

switch (grade) {

case 'A':

System.out.println("优秀!");

break;

case 'B':

case 'C':

System.out.println("不错");

break;

case 'D':

System.out.println("通过");

case 'F':

System.out.println("要继续努力");

break;

default:

System.out.println("无效的成绩");

}

System.out.println("你的成绩等级是: " + grade);

}

}

注意,当成绩等级为A时,第一条case语句为true。输出字符串“优秀!”,然后遇到break语句,控制流程跳到switch语句后的下一条语句。当成绩等级为B时,第二条case语句为true,case B后的所有语句都会被执行,直到遇到break语句。当成绩等级为B时,即使“case 'C'”为false,控制流程继续往下走,因为B和C之间没有break语句。当成绩等级为D时,控制流程类似。

Switch语句从C继承而来,在很多情况下它比使用多个if/else语句更优美更容易。但是必须注意的是,switch语句只测试变量和值的相等性,不能用于大于、小于比较。此外,在单个case语句中只能比较一个值。

 

猜你喜欢

转载自blog.csdn.net/qq_45097560/article/details/90725780
今日推荐