流程控制语句

1.1流程控制语句

是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。其流程控制方式有:顺序结构、分支结构和循环结构。

 

1.1.1  If单分支选择结构

if语句对条件表达式进行一次测试,若测试为真,则执行下面的语句,否则跳过该语句

 

public class Test02{

public static void main(String[] args){

          //if语句举例:

          //晚上加不加班

          boolean a = true;

          /*if语法:

          if(boolean值的表达式){

          当boolean值返回true的时候,执行该代码

          }

          */

                  

          if (a){

                   System.out.println("继续敲代码");

          }

          System.out.println("回家吃鸡腿");

           

}

}

返回的结果为

 

当a的值为false时,返回的结果为

 

 

1.1.2  if-else双分支选择结构

当条件表达式为真时,执行语句块1,否则,执行语句块2。也就是else部分

语法举例:

public class Test02{

         public static void main(String[] args){

                  //if语句举例:

                  //晚上加不加班

                  boolean a = true;

                  /*if语法:

                  if(boolean值的表达式){

                  当boolean值返回true的时候,执行该代码

                  }

                  */

                         

                  if (a){

                          System.out.println("继续敲代码");

                  }else{

                          System.out.println("回家吃鸡腿");

                  }

                  System.out.println("努力奋斗");

                   

         }

}

返回结果

 

如a的值为false,结果为

 

 

拓展练习

小孩搬桌子: 年龄大于7岁可以搬桌子了,大于5岁且为男孩,也可以搬桌子了;否则不可以搬动桌子。

import java.util.Scanner;

public class Test02{

         public static void main(String[] args){             

                    Scanner input = new Scanner(System.in);

                    System.out.println("请输入性别:1.男孩 2.女孩");

                    int gender = input.nextInt();

                    System.out.println("请输入年龄");

                    int age = input.nextInt();

                    if (gender == 1){

                           

                            if(age > 5){

                                     System.out.println("男孩5岁就可以搬桌子了");

                            }else{

                                     System.out.println("男孩小于5岁不能搬桌子");

                                   }

                    }else

                           

                    if(age > 7){

                            System.out.println("女孩7岁就可以搬桌子");

                    }else{

                            System.out.println("女孩小于7岁不能搬桌子");

                    }

         }

}

测试结果

 

 

1.1.3  If-else if-else多分支选择结构

If-else if-else多分支结构适合处理区间段的问题,区间段从小到大用”<”,从大到小用”>”.例如:

 

2                   public class Test03{

3                   public static void main(String[] args){

4                             int age = (int) (100*Math.random());

5                             System.out.print("年龄是"+age+",属于");

6                             if (age<15){

7                                      System.out.println("青春年少");

8                             }else if(age<25){

9                                      System.out.println("风华正茂");

10                          }else if(age<45){

11                                   System.out.println("蒸蒸日上");

12                          }else if(age<65){

13                                   System.out.println("儿孙满堂");

14                          }else if(age<85){

15                                   System.out.println("寿比南山");

16                          }else{

17                                  

18                          }

19                }

20                }

返回的值为:

 

 

1.14 switch多分支选择结构

import java.util.Scanner;

public class Test04{

         public static void main(String[] args){

                  System.out.println("欢迎光临陕西面馆,本店推出如下面食:1.羊肉泡馍 2.炒麻食 3.油泼面 4.酸菜扯面");

                  Scanner input = new Scanner(System.in);

                  System.out.println("请点餐");

                  int a = input.nextInt();

                  switch (a){

                          case 1:

                          System.out.println("羊肉泡馍");

                          break;

                          case 2:

                          System.out.println("炒麻食");

                          break;

                          case 3:

                          System.out.println("油泼面");

                          break;

                          case 4:

                          System.out.println("酸菜扯面");

                          break;

                         

                          default:

                          System.out.println("您点的餐已经卖完了");

                          break;

                         

                  }

         }

}

返回结果如下:

 

Switch语句的特性:

1.switch语句会根据表达式的值从相匹配的执行,一直执行到break标签处

语句处或者是switch语句的末尾。与任一case值不匹配,则进入default语句; 

2.只能处理等值条件判断的情况,且表达式必须为byte,short,int或char类型 ,String 不能是double,float.  Long;

3.常量值必须是与表达式类型兼容的特定的一个常量;

4.不允许有重复的case值 ;

5.default子句为可选(可写可不写)

 

拓展练习:

随机生成一个字母 ,并且判断字母的分类 (a e i o u为元音字母,y w为半元音字母,其他的是辅音字母。

public class Test05{

         public static void main(String[] args){

                 

        

         int n = (int)(Math.random()*26)+97;

         char c = (char)n;

         System.out.println(c);

         switch (c){

                  case 'a':

                  case 'e':

                  case 'i':

                  case 'o':

                  case 'u':

                  System.out.println("元音字母");

                  break;

                  case 'y':

                  case 'w':

                  System.out.println("半元音字母");

                  break;

                 

                  default:

                  System.out.println("辅音字母");

                  break;

                 

         }      

         }

}

返回结果如下:

 

 

1.1.5 while循环

While循环注意点:在循环刚开始时,会计算一次“布尔表达式”的值,若条件为真,执行循环体。而对于后来每一次额外的循环,都会在开始前重新计算一次。

语句中应有使循环趋向于结束的语句,否则会出现无限循环–––"死"循环

 

While循环的四个元素:

  1. 初始化
  2. 条件判断
  3. 循环体
  4. 迭代(就是让条件判断趋向于false的操作

当初始化条件不成立的时候,while循环一次都不执行

 

举例:请计算小于6的正整数之和

public class Test06{

         public static void main(String[] args){

                  //赋值,初始化

                  int sum = 0;

                  int count = 0;

                  //条件判断

                  while (count < 6){

                          //循环体

                          sum += count;

                          //迭代

                          count ++;                          

                  }

                  System.out.println(sum);

         }

}

返回结果如下:

 

 

1.1.6 do-while循环

Do-while循环是先执行,后判断,当初始化的条件不成立的时候,也总是保证循环体会被至少执行一次。

While循环是先判断,后执行。

举例:请计算小于6的正整数之和(用do-while循环)

public class Test07{

         public static void main(String[] args){

                 

 

         //赋值,初始化

         int count = 0;

         int sum = 0;

         do{

                  //循环体

                  sum += count;

                  //迭代

                  count ++;

         }while (count < 6);

         System.out.println(sum);

        

         }

}

返回结果值为:

 

次数不固定的循环用while循环,次数固定用for循环。

1.1.7 for循环

 

练习:计算1-10所有数字之和

public class Test08{

        

 

public static void main(String[] args){

                          int sum = 0;

                          for(int i=1;i <=10;i++){

                                   sum += i;

                                  

                          }

                         

                          System.out.println(sum);

                         

         }

}

返回结果为:

 

拓展练习:

·用while和for循环分别计算100以内奇数和偶数的和,并输出

先用while循环:

public class Test01{

         public static void main(String[] args){

                 

                  int a = 1;

                  int o = 0;//保存偶数的和

                  int j = 0;//保存奇数的和

                  while (a <= 100){

                          if (a % 2 == 0){

                                   o += a;

                          }else {

                                   j += a;

                          }

                          a ++;

                  }

                  System.out.println("偶数的和是:"+ o);

                  System.out.println("奇数的和是:"+ j);

         }

}

再用for循环:

public class Test01{

         public static void main(String[] args){

                 

 

                  int o = 0;//保存偶数的和

                  int j = 0;//保存奇数的和

                  for (int a=1;a<=100;a++){

                          if (a % 2 ==0){

                                   o += a;

                          }else {

                                   j += a;

                          }

                  }

                 

                 

                  System.out.println("偶数的和是:"+ o);

                  System.out.println("奇数的和是:"+ j);

         }

}

 

返回的结果一致,都是:

 

·循环录入某学生5门课的成绩并且计算平均分,如果分数录入为负数,重新录入

import java.util.Scanner;

public class Test03{

         public static void main(String[] args){

                  //循环录入某学生5门课的成绩并且计算平均分,如果分数录入为负数,重新录入

                  Scanner input = new Scanner(System.in);

                  int sum = 0;

        for (int a = 0;a < 5;a++){ //a代表的是循环次数,第一次默认用0,共5次,所以a<5;a++代表的是迭代,循环完1次后开始下一次循环

                          System.out.println("请输入第"+a+"门课的成绩");

                          int score = input.nextInt();

                          if (score >= 0){

                                   sum += score;

                          }else {

                                   a --; //如果成绩有误,就需要在原来循环迭代的基础上-1次,就是不计算此次循环,避免此次循环录入空白值

                                   System.out.print("分数录入为负数,请重新录入");

                          }

                         

                  }

                  System.out.println("该学员的平均成绩是"+sum/5);

}

}

 

返回的结果如下:

 

 

posted @ 2019-04-21 11:21  SeanGuo  阅读(862)  评论(0编辑  收藏  举报