流程控制(第四章)

一、复合语句

与C语言及其他语言相同,Java语言的复合是以整个块区为单位的语句,所以又称块语句。复合语句有开括号“{”开始,闭括号“}”结束。

在使用时要注意,复合语句为局部变量创建一个作用域,该作用域为程序的一部分,在该作用中某个变量被创建并能够使用。如果在某个变量的作用的作用域外使用该变量,则会发生错误。

二、if条件语句

if语句是一个重要的编程语句,用于告诉程序在某个条件成立的情况下执行另一条语句。if条件语句可分为简单的if条件语句,if…else if多分支语句

1.1简单的if条件语句

语法如下:

if(布尔类型表达式){
语句序列
}

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

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

如果语句序列中只有一条语句,可以采用一下写法:

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

提示:

虽然if条条件语句中的语句序列只有一条语句时,省略“{ }”并无语法错误,但为了增强程序的可读性,最好不要省略。
条件语句后的语句序列省略时,可以保留外面的大括号。也可以省略大括号,最后在末尾加“;”。
如下两种情况都是正确的:
boolean b = false;
if(b);
boolean b= false;
if(b){ }

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

创建Takephone类,模拟拨打电话场景,如果电话号码不是84972266,则提示拨打号码不存在。

public class Takephone{
    public static void main(String[]arges){
    int phoneNumber = 123456789;//创建变量,保存电话号码
    if(phoneNumber !=84972266{//如果此电话号码不是84972266
        System.out.println("对不起,您拨打的号码不存在!");//提示号码不存在
        }
    }
}

运行结果如下:

流程图:

二、if…else语句

if…else语句是条件语句中最常用的一种形式,他会针对某种条件有选择做出处理,通常表现为“如果满足某种条件,就进行某种处理,否则就进行另一种处理”。语法如下:

if(条件表达式){
    语句序列1
}else{
    语句序列2
}

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

使用if…else语句校验密码,在项目中创建Login类,在主方法中定义变量,并通过使用if…else语句判断变脸的值来决定输出结果。

public class Login {
    public static void main(String[] args) {
        int password = 987654321;{//密码值
        if (123456789 == password) {//如果密码是123456789
            System.out.println("密码正确,欢迎登录");//密码正确的提示
        }else {//否则
            System.out.println("密码错误,拒绝登录");//密码错误提示
        }
    }

    }
}

运行结果如下:

流程图如下:

三、if…else if多分支语句

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

if(条件表达式){
    语句序列1
else if(条件表达式2){
}
……
else if(条件表达式n){
}

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

语句序列:可以是一条或多条语句,当条件表达式为true时,执行语句序列1:;当条件表达式的值为ture时,执行语句序列2,以此类推。当省略任意一组语句序列时,可以保留其外面的的“{ }”也可以将“{ }”替换为“;”

使用if …else语句实现座位分配,创建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("抱歉,我们店暂时没有这么大的包厢!");//当以上条件不成立时,执行该语句
        }
    }

}

运行结果如下:

流程图:

四、Switch 多分支语句

在编程中,一个常见的检测是一个变量是否复合某个条件,如果不符号再用另一个值来检测,以此类推。当然,这种问题使用if条件语句也可以完成。以下是Switch语句的基本语法结构:

Switch (变量或表达式){
case 取值 1:
//对应取值1的代码
break;
//对应取值2的代码
break;
//…
default:
//对应其他取值的代码
break;
}

注意事项:

  1. Switch语句只能用于判断某个变量或表达式的取值,不能判断某个条件是否成立。

  1. case分支的取值必须是常量表达式,不能是变量或其他非常量表达式。

  1. 在case分支中可执行多条语句,但是必须以break语句介绍。如果没有break语句,则会继续执行后面的case分支,直到遇到break语句或switch语句结束。

  1. default分支可以省略,如果省略了则不会执行任何代码。

例题,使用switch语句为考试分数分级,创建Scanner类,代码如下。

import java.util.Scanner;//引入Scanner类
public class Grade {
    public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);//创建扫描器,接收控制台输入的内容
    System.out.print("请输入成绩:");//输出字符串
    int grade = sc.nextInt();//获取控制台输入的数字
    switch (grade) {//使用switch判断数字
    case 10://如果等于10,则继续执行下一行代码
    case 9://如果等于9
    System.out.println("成绩为优");//输出“成绩为优”
    break;//结束判断
    case 8://如果等于8
    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();
    }

}

运行结果如下:

流程图:

二、循环语句

一、While 循环语句

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

while(条件表达式){
语句序列
}

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

例题:创建GetSun类,在主方法中通过while循环计算1~1000相加的和并输出。

代码如下:

public class GetSun {
    public static void main(String[] args) {
        int x= 1;//从1开始
        int sun= 0;//相加的结果
        while (x <= 1000) {//循环1000次
            sun =sun + x;
            x++;
        }
    System.out.println("sun ="+sun);
    }

}

运行结果如下:

流程图:

一、do…while循环语句

do…while循环语句与while循环语句相似,也是用来重复执行一段代码,但是它有个特点,就是无论循环条件是否为真,do…while循环至少会执行一次。

do…while循环语句的语法如下:

do{
//循环体
} while(循环条件);

使用

do…while循环的注意点有:

  1. 循环体至少会执行一次,所以要确保循环条件的代码可以正确的执行一次

  1. 循环条件在循环体后面,所以要注意条件的赋值和修改,避免进入死循环。

  1. do…while循环的区别在于循环条件的判断顺序,do…while循环先执行一次循环体,再判断循环条件是否为真,而while循环则是先判断循环条件是否为真,再执行循环体,因此在实际使用时要根据具体情况选择的合适的循环语句。

创建LoginService类,代码如下:

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(931567 != password);//当用户输入的密码不是931567则继续执行循环
        System.out.println("登录成功");//提示循环结束
        sc.close();//关闭扫描器
    }

}

运行结果如下:

流程图:

二、for循环语句

Java中的for循环是一种常用的循环结构,可以方便实现对一定次数的重复执行操作。for循换语法如下:

for(表达式1;表达式2;表达式3){
语句序列;
}

其中,初始化语句在循环开始前执行一次,循环条件在每次循环开始前进行判断,如果为ture,则执行循环体语句,执行完循环体语句后执行循环后操作,然后再次进行循环条件的判断,如此往复直到循环条件不成立时结束循环。

for循环常用于遍历数组或集合等集合类数据结构。同时,Java中的for循环条件也支持多个循环变量和增量表达式的自定义设置,可以实现更加灵活的循环操作。

需要注意的是,在for循环中,如果循环条件一开始就不满足,循环体语句不会被执行;同时,在循环条体中可以满足使用break语句和continue语句控制循环的执行流程。

使用for循环计算2~100所有偶数只和,代码如下:

public class Circculate {
    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);//将相加后的结果输出
    }

}

运行结果如下:

流程图:

三、循环控制

break语句

在Java中,break语句可以用于循环或者Switch语句中,用于提前结束或者跳出包含该语句的循环或者Switch语句中,用于提前结束循环或者跳出Switch语句的执行。当程序执行到break语句时,会直接跳出包含该语句的循环或Switch语句,并且继续执行后面的代码。

同样break也可以跳出循环体。在循环中,一旦执行到break语句,循环将会被立即终止,程序会跳出循环并执行循环后的代码。

创建BreakTest类,代码如下:

public class BreakTest {
    public static void main(String[] args) {
        for(int i =1;i<20;i++) {
            if(i%2==0) {
                System.out.println("i");
                break;
            }
        }
        System.out.println("---end---");
    }
}

运行结果如下:

流程图如下:

循环嵌套情况下,break 语句将只会使程序流程跳出包含它的最内层的循环结构,即只跳出一层循环。

Continue 语句

continue语句是针对break语句补充的补充,continue语句不是立即跳出循环体,二是跳过本次循环,回到循环的条件测试部分,重新开始执行循环。在for循环语句中遇到continue后,首先执行循环的增量部分,然后进行条件测试,在while和do…while循环中,continue语句使控制回到条件测试部分。

创建一个ContinueTest类,代码如下:

public class ContinueTest {
    public static void main(String[] args) {
        for(int i = 1;i<=20;i++) {
            if(i %2 ==0) {//如果i是偶数
                continue;//跳到下一循环
            }
            System.out.println(i);//输出i的值
        }        

    }

}

运行结果如下:

流程图:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值