从0开始学Java-8 流程控制

8.1 复合语句

Java语言的复合语句是以整个块区为单位的语句,所以又称块语句。复合语句由开括号“{”开始,闭括号“}”结束。

8.2 条件语句

8.2.1 if 条件语句

if 之后可是作为条件的“布尔表达式”,if条件语句可分为简单的if条件语句、if...else语句和if...else if多分支语句。

1.简单的if语句

语法:

if(布尔表达式){

  语句序列

}

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

2)语句序列:可选参数,可以是一条或多条语句,当表达式的值为true时执行这些语句。若语句序列中仅有一条语句,则可以省略条件语句中的“{}”:

int a = 100;
if(a==100)
System.out.println("a的值是100");

if条件语句的执行过程:

 

 

8.2.2 if...else 语句

if(条件表达式){

  语句序列 1

}else{

  语句序列 2

}

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

 

 

 

 

 

8.2.3 if...else if 语句

 

 

 if...else if 多分支语句用于针对某一事件的多种情况进行处理。通常表现为“如果满足某种条件,就进行某种处理,否则如果满足另一种条件则执行另一种处理。”语句如下:

if(条件表达式){

  语句序列 1

}else if(条件表达式2){

  语句序列 2

}else if(条件表达式n){

  语句序列 n

}

 

 

 

/*
使用 if...else if语句实现饭店座位分配
创建Restaurant类,声明整型变量count表示用餐人数,
根据人数安排客人到4人桌、8人桌或包厢用餐
*/
public class Restaurant {
  public static void main(String[] args) {
    System.out.println("欢迎光临,请问有多少人用餐?");       //输出问题提示
    int count = 9;                           //用餐人数
    System.out.println("回答:" + count + "人");           //输出回答
    if(count <= 4) {                         //如果人数小于4人
      System.out.println("客人请到大厅4人桌用餐");         //请到4人桌
    }else if(count > 4 && count <= 8){                //如果人数在4~8人
      System.out.println("客人请到大厅8人桌用餐");         //请到8人桌
    }else if(count > 8 && count <= 16){                //如果人数在8~16人
      System.out.println("客人请到楼上包厢用餐");         //请到包厢
    }else {                              //当以上条件都不成立时
      System.out.println("抱歉,我们店暂时没有这么大的包厢");   //输出信息
    }
  }
}

8.2.4 switch 多分支语句

语法如下:

switch(表达式){

case 常量值 1:

   语句块1

   [break;]

...

case 常量值 n:

   语句块 n

   [break;]

default:

  语句块 n+1;

  [break;]

}

switch 语句中表达式的值必须是整型、字符型、字符串类型或枚举类型,常量1~n的数据类型必须与表达式的值的类型相同。

switch 语句首先计算表达式的值,如果表达式的计算结果和某个case后面的常量值相同,则执行该case语句后的若干个语句直到遇到break语句为止。此时,如果该case语句中没有break语句,将继续执行后面case中的若干个语句,直到遇到break语句为止。若没有一个常量的值与表达式的值相同,则执行default后面的语句。default语句为可选的。如果它不存在,且switch语句中表达式的值不与任何case的常量值相同,switch语句则不做任何处理。

同一个case语句,case的常量值必须互不相同。

 

 

使用switch语句为考试分数分级

创建Gread类,使用Scanner类在控制台输入分数,然后用switch多分支语句判断输入的分数属于哪类成绩。10分和9分属于优,8分属于良,7分和6分属于中,5分、4分、3分、2分、1分以及0分均属于差。

import java.util.Scanner;             //导入Scanner类
public class Gread {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);   //创建扫描器,接受控制台输入内容
    System.out.println("请输入成绩:");   //输出字符串
    int gread = sc.nextInt();        //获取控制台输入的数字
    switch(gread) {             //使用switch判断数字
    case 10:                 //如果等于10,则继续执行下一行代码
    case 9:                 //如果等于9
      System.out.println("成绩为优");   //输出“成绩为优”
      break;                //结束判断
    case 8:                 //如果等于9
      System.out.println("成绩为良");   //输出“成绩为良”
      break;                //结束判断
    case 7:                 //如果等于7,则继续执行下一行代码
    case 6:                 //如果等于6
      System.out.println("成绩为中");   //输出“成绩为中”
      break;                //结束判断
    case 5:                  //如果等于5,则继续执行下一行代码
    case 4:                 //如果等于4,则继续执行下一行代码
    case 3:                 //如果等于3,则继续执行下一行代码
    case 2:                 //如果等于2,则继续执行下一行代码
    case 1:                 //如果等于1,则继续执行下一行代码
    case 0:                 //如果等于0
      System.out.println("成绩为差");   //输出“成绩为差”
      break;                //结束判断
    default:                 //如果不符合任意一个结果
      System.out.println("成绩无效");   //输出“成绩无效”
    }
    sc.close();               //关闭扫描器
  }
}

8.3 循环语句

8.3.1 while 循环语句

while语句也称条件判断语句,它的循环方式为利用一个条件来控制是否要继续反复执行这个语句,语法如下:

while(条件表达式){

  语句序列

}

当条件表达式的返回值为真时,则执行“{}”中的语句,当执行完“{}”中的语句后,重新判断条件表达式的返回值,直到表达式返回的结果为假时,退出循环。


 

 

计算1~1000的相加结果:

 

 

public class GetSum {
  public static void main(String[] args) {
    int x = 1;              //从1开始
    int sum = 0;             //相加的结果
    while(x <= 1000) {          //循环1000次
      sum = sum + x;          //sum与之前计算的和相加
      x++;               //每次循环后x的值+1
    }
    System.out.println("sum=" + sum);   //输出最终的相加结果
  }
}

 

 

 

8.3.2 do...while 循环语句

do...while 循环语句先执行循环一次,在判断条件是否成立。

do{

  语句序列

}while(条件表达式);

 

 

 使用do...while语句进行用户登录验证

创建LoginService类,首先提示用户输入6位密码,然后使用Scanner扫描器类获取用户输入的密码,最后进入do...while循环进行判断,如果用户输入的密码不正确,则让用户反复输入,直到输入正确密码为止。

 

import java.util.Scanner;

 

public class LoginService {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);      //创建扫描器,获取控制台输入的值
    int password;                  //保存密码
    do {
      System.out.println("请输入6位数字密码:"); //输出提示
      password = sc.nextInt();          //将用户在控制台输入的密码记录下来
    }while(password != 123456);           //如果用户输入的密码不正确,则继续执行循环
    System.out.println("输入成功");         //提示循环结束
    sc.close();                   //关闭扫描器
  }
}

8.3.3 for 循环语句

8.3.3.1 for 语句

传统的for语句有3个表达式:

for(表达式1;表达式2;表达式3){

  语句序列

}

表达式1:初始化表达式,负责完成变量的初始化

表达式2:循环条件表达式,值为boolean型的表达式,指定循环条件

表达式3:每次循环结束后执行的语句,通常用来改变循环条件

 

 

在执行for循环时,首先执行表达式1,完成某一变量的初始化工作;下一步判断表达式2的值,若表达式2的值为true,则进入循环体;在执行完循环体后紧接着计算表达式3,这部分通常是增加或减少循环控制变量的一个表达式。这样一轮循环就结束了。第二轮循环从计算表达式2开始,若表达式2返回true,则继续循环,否则跳出整个fou语句。

 

使用for循环计算2~100所有偶数之和:

 

 

public class Circulate {
  public static void main(String[] args) {
    int sum = 0;                        //偶数相加后的结果
    for(int i = 2; i <= 100; i+=2) {              //指定循环条件和循环体
      sum = sum +i;
    }
    System.out.println("2到100之间的所有偶数之和为:" + sum);  //将相加后的结果输出
  }
}

8.3.3.2 foreach 语句

foreach 语句是for语句的特殊简化版本

for(元素类型 x : 遍历对象 obj){

  引用了x的java语句;

}

使用foreach语句遍历整型数组

public class Repetition {
  public static void main(String[] args) {
    int arr[] = {5, 13, 96};
    System.out.println("一维数组中的元素分别为:");
    //x的类型与arr元素的类型相同。for循环依次取出arr中的值并赋给x
    for(int x : arr) {
      System.out.println(x);
    }
  }
}

 

posted @ 2022-07-06 22:36  ditiewuhaoxian  阅读(89)  评论(0)    收藏  举报