第四章总结

本文详细介绍了Java编程中的几种条件语句,包括if、if...else和if...elseif...else,以及switch语句的用法。同时,讲解了循环语句,如while、do...while和for循环,以及如何使用break和continue来控制循环流程。文章还给出了具体的代码示例和流程图,帮助理解每种语句的执行过程。
摘要由CSDN通过智能技术生成

4.1复合语句

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


4.2条件语句

4.2.1 if条件语句

if条件语句是一个重要的编程语句,用于告诉程序在某个条件成立的情况下执行某段语句,而在另一种情况下执行另外的语句。

  1. 简单的if条件语句

语法如下:

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

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

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

例4.1判断手机号是否存在

代码为:

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

结果为:

流程图:


  1. if……else语句

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

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

if后面“()”内的表达式的值必须是boolean型的。如果表达式的值为true,则执行紧跟if语句的复合语句;如果表达式的值为false,则执行else后面的复合语句。同简单的if条件语句一样,如果if……else语句的语句序列中只有一条语句(不包括注释),则可以省略该语句序列外面的“{}”。有时为了编程的需要,else或if后面的“{}”中可以没有语句。

例4.2使用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("密码错误,拒绝登录");//密码错误的提示
        }
    }
}

结果为:

流程图:


  1. if……else if多分支语句

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

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

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

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

例题4.3使用if……else if语句实现饭店座位分配

代码为:

public class Reataurant {
    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("抱歉,我们店暂时没有这么大的包厢!");  //输出信息
        }
    }
}

结果为:

流程图:


4.4.2 switch多分支语句

在编程中,一个常见的问题就是检测一个变量是否符合某个条件,如果不符合,再用另一个值来检测,以此类推。在Java中,可以用Switch语句将动作组织起来,以一个较简单明了的方式来实现“多选一”的选择。语法如下:

switch(表达式){
case 常量值1:
     语句块1
     【break】
……
case 常量值n:
     语句块n
     【break】
default:
     语句块n+1
     【break】
}

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

switch语句首先计算表达式的值,如果表达式的计算结果和某个case后面的常量值相同,则执行该case语句后的若干个语句直到遇到break语句为止。

同一个 switch语句,case的常量值必须互不相同。在 switch语句中,case语句后常量表达式的值可以为整数,但绝不可以是非整数的实数。

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

代码为:

import java.util.Scanner;
public class Gradeon {
    public static void main(String[]args) {
        Scanner sc=new Scanner(System.in);   //创建扫描器,获取控制台输入的值
        System.out.println("请输入成绩:"); //输出字符串
        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();                        //关闭扫描器
    }
}

结果为:

流程图:


4.3 循环语句

4.3.1 while循环语句

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

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

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

例4.5 计算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);   //输出最终的相加结果
    }
}

结果为:

流程图:


4.3.2 do……while循环语句

do……while循环语句与while循环语句类似,它们之间的区别是while语句为先判断条件是否成立,再执行循环体,而do……while循环语句则先执行一次循环后,再判断条件成立。也就是说,do……while循环语句“{}”中的程序段至少要被执行一次。语法如下:

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

do……while语句与while语句的一个明显的区别是,do……while语句在结尾处多了一个分号。

例4.6 使用do……while语句进行用户登录验证

代码为:

import java.util.Scanner; //引入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();                               //关闭扫描器
    }
}

结果为:

流程图:


4.3.3 for循环语句

for循环是Java程序设计中最有用的循环语句之一。一个for循环可以用来重复执行某条语句,直到某个条件得到满足。for循环有两种语句,一种是传统的for语句,一种是foreach语句。

1.for语句

传统的for语句中有3个表达式,其语法如下:

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

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

表达式2:循环条件表达式,值为Boolean型的表达式,指定循环条件。等同于while循环里的表达式。

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

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

例4.7 使用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);    //将相加后的结果输出
    }
}

结果为:

流程图:


2. foreach语句

foreach语句是for语句的特殊简化版本,不能完全取代for语句,但任何foreach语句都可以改写为for语句版本。 foreach并不是一个关键字,习惯上将这种特殊的for语句格式称为 foreach语句。语法如下:

for(元素类型 x:遍历对象obj){
      引用了x的Java语句;
}

foreach语句中的元素变量x,不必对其进行初始化。

例题4.8 使用 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);            //输出遍历出的元素值
        }
    }
}

结果为:

流程图:


4.4 循环控制

4.4.1 break语句

使用 break语句可以跳出Switch结构。在循环结构中,同样也可以 break语句跳出当前语句结束循环体。从而中断当前循环。

例4.9 输出1~20出现的第一个偶数

代码:

public class BreakTest {
    public static void main(String[] args) {
        for(int i = 1;i<20;i++) {     //定义i
            if(i%2==0) {            //如果i是偶数
                System.out.println(i);//输出i的值
                break;                //结束循环
            }
        }
        System.out.println("---end---");   //结束时输出一行文字
    }
}

结果为:

流程图:


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

如果想让break跳出外层循环,Java提供了“标签”的功能,语法如下:

标签名:循环体{
    break标签名;
}

标签名:任意表示符

循环体:任意循环语句

break标签名:break跳出指定的循环体,此循环体的标签名必须与break的标签名一致。带有标签的break可以指定跳出的循环,这个循环可以是内层循环,也可以是外层循环。

例4.10 使用标签让break结束外层循环

代码为:

public class BreakInsideNested {
    public static void main(String[] args) {
        for(int i = 1;i <=3;i ++) {        //外层循环
            for(int j = 1;j <= 5;j ++) {    //内层循环
                if(j == 4) {        //内层循环至第4次时就结束
                    break;
                }
                System.out.println("i="+ i +" j="+ j); 
            }
                
        }
    }
}

结果为:

流程图:


4.4.2 continue语句

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

例4.11 输出1~20的奇数

代码为:

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

结果为:

流程图:


与break语句一样,continue也支持标签功能,语法如下:

标签名:循环体{
continue标签名
}

标签名:任意标识符

循环体:任意循环语句

continue标签名:continue跳出指定的循环体,此循环体的标签名必须与continue的标签名一致。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值