if statement and switch cycle

IF statement uses

If followed by a statement by one to a more Boolean expression statement, whose syntax is as follows:

 

if (boolean expression) {

// statements If the Boolean expression is true, on the implementation of

}

If the Boolean expression in parentheses is true, on the implementation of the braces in the statement. If the Boolean expression is false, then skip braces statement. In the case of the Boolean expression is false, the control flow will jump to the statements under the braces.

Example of use as if

/*  IfDemo.java

  Demo if statement.

*/

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 ( "value of x is equal to 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 ( "value of x is equal to 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语句中只能比较一个值。

 

Guess you like

Origin blog.csdn.net/qq_45097560/article/details/90725780