• 第二章《Java程序世界初探》第7节:关系运算符及条件语句


    关系运算符有==、!=、>、>=、<、<=。它们分别表示等于、不等于、大于、大于等于、小于和小于等于。关系运算符的作用是判断两个数据之间是否存在某种逻辑关系。既然是“判断”,说明关系运算符所描述的逻辑关系并不一定真的成立,需要经过计算才能最终确定。虚拟机经过计算之后,如果认定两个数据之间确实存在关系运算符所描述的逻辑关系,则设置运算结果为true,否则设置运算计算结果为false。

    例如:

    1. int a=1;
    2. int b=2;

    程序员就可以用“>”来判断 “a>b”是否成立。经过判断之后,虚拟机发现 “a>b”并不成立,于是就把计算结果设定为false。

    由关系运算符和操作数所组成的表达式称为“关系表达式”,例如“a>b”就是一个关系表达式。关系表达式也被称为“条件”。如果一个关系表达式的计算结果为true,则说明条件成立,否则说明条件不成立。

    实际开发过程中,程序员可以让计算机在某个条件成立的情况下才去执行语句。为计算机设定执行语句条件的格式为:

    1. if(条件)
    2.    语句;

    以上格式包含三部分:

    1. if关键字以及它后面的小括号。
    2. 小括号中的条件。
    3. 条件成立时要执行的语句。

    这种格式被称为“条件语句”。条件语句在编程中有着广泛的应用,比如在2.4小节所述的计算圆形面积的例子中,程序员可以让计算机在用户输入的圆形半径值大于等于0的情况下才去计算圆形面积,因此原先的代码可以修改为:

    1. import java.util.Scanner;
    2. public class Exam02_01{
    3. public static void main(String[] args) {
    4. double r;//用于保存用户输入的圆形半径值
    5. double area;//用于保存计算所得圆形面积
    6. final double PI = 3.14;//圆周率π
    7. Scanner sc = new Scanner(System.in);//创建Scanner类对象sc
    8. System.out.println("请输入圆形半径:");//提示用户输入圆形半径值
    9. r = sc.nextDouble();//接收用户输入的圆形半径并保存于变量r中
    10. if(r>=0)
    11. System.out.println("圆形的面积是:"+ PI*r*r);//①
    12. }
    13. }

    代码中加粗的部分使用了条件语句。这样,仅在r的值在大于等于0的情况下才去执行语句①计算并输出圆形的面积。

    但是,如果用户所输入的圆形半径值r小于0,if关键字之后的条件就不成立,计算机也不会执行任何代码。输入了数据却看不到任何输出结果,这会让用户的操作体验非常差。合理的做法是:当用户输入的半径值r小于0,要提示用户“输入有误”。为了能够在条件不成立的情况下提示用户输入数据有误,可以在程序中采用以下结构编写代码:

    1. if(条件)
    2. 语句1;
    3. else
    4. 语句2;

    在这个结构中,出现了关键字else。else表示“否则”。因此这个结构的作用是:if关键字后面的条件成立则执行语句1,否则执行语句2。把这种结构应用在计算圆形面积的程序中可以用来提示用户输入的半径值存在错误:

    1. import java.util.Scanner;
    2. public class Exam02_01
    3. {
    4. public static void main(String[] args) {
    5. double r;//用于保存用户输入的圆形半径值
    6. double area;//用于保存计算所得圆形面积
    7. final double PI = 3.14;//圆周率π
    8. Scanner sc = new Scanner(System.in);//创建Scanner类对象sc
    9. System.out.println("请输入圆形半径:");//提示用户输入圆形半径值
    10. r = sc.nextDouble();//接收用户输入的圆形半径并保存于变量r中
    11. if(r>=0)
    12. System.out.println("圆形的面积是:"+ PI*r*r);//①
    13. else
    14. System.out.println("半径值小于0,无法计算圆形面积!");//②
    15. }
    16. }

    在以上代码的加粗部分,如果r的值大于等于0,则执行语句① 计算圆形面积,否则执行语句②,在控制台上输出“半径值小于0,无法计算圆形面积!”。

    if与else关键字组合而成的if...else结构并不难理解。但初学Java的读者还需要注意以下几个细节:

    • if后面的小括号之后千万不要写分号(;)
    • if部分可以单独存在,但else部分则不能,它表示某种条件不成立的情况,因此else的前面必然有一个与之对应的if。
    • 无论是if还是else,都仅能“附带”一条语句。也就是说,无论条件是否成立,都仅能执行一条语句。如果希望条件成立或不成立的情况下都能执行多条语句,则需要用一对大括号把希望执行的语句全部括起来:
    1. if(条件){
    2. 语句1;
    3. 语句2;
    4. ...
    5. 语句n;
    6. }
    7. else{
    8. 语句1;
    9. 语句2;
    10. ...
    11. 语句n;
    12. }

    按照这种格式书写代码,无论条件是否成立,都可以执行多条语句。另外,还要提醒各位读者养成两个好的编程习惯:

    1. 即使if或else仅附带1条语句,最好也要加上大括号。
    2. if和else所附带的语句最好都要有一定的缩进,这样可以体现出这些语句属于if或else。

    以上两个好习惯可以让代码具有更好的层次感和可读性。

    关系运算符与if...else结构互相配合可以完成很多操作。下面就来讲解其中一个经典案例:三数求最大值。所谓“三数求最大值”就是指从任意三个数中找到最大的那个并且输出到控制台。假设三个数字分别是a、b、c,找到它们中最大值的基本思路是:定义一个变量max用来保存最大的数,先用a与b做比较,找到它们中较大的那个并存入max中。然后用max与c做比较,如果c>max,则把c的值存入max。经过两次比较之后,变量max中就保存了三个数中最大的值,这个程序的完整代码如下:

    【例02_06三数求最大值】

    Exam02_06.java

    1. import java.util.Scanner;
    2. public class Exam02_06 {
    3. public static void main(String[] args) {
    4. int a, b, c;
    5. int max;// 用来保存最大值
    6. Scanner sc = new Scanner(System.in);
    7. System.out.println("请输入变量a的值");
    8. a = sc.nextInt();
    9. System.out.println("请输入变量b的值");
    10. b = sc.nextInt();
    11. System.out.println("请输入变量c的值");
    12. c = sc.nextInt();
    13. //用一个if...else结构找到ab两个数中较大的数字,并保存到max中
    14. if (a > b) {
    15. max = a;
    16. } else {
    17. max = b;
    18. }
    19. //从max和c中找到较大的数字
    20. if (c > max) {
    21. max = c;
    22. }
    23. System.out.println("三个数中最大值是:" + max);
    24. }
    25. }

    由用户从控制台上任意输入3个数,程序运行结果如图2-12所示。

    图2-12 【例02_06】运行结果

    除阅读文章外,各位小伙伴还可以点击这里观看我在本站的视频课程学习Java!

  • 相关阅读:
    Delphi自定义单元模块和调用_全局函数、全局过程、全局变量、全局常量定义
    docker.5-Docker容器化部署企业级应用集群
    【数据结构】字符串匹配(kmp算法)
    微服务——服务治理
    马斯克欲“放手”,终止收购 Twitter
    认识matlab
    一篇文章彻底理解数据库的各种超时参数
    浅谈Vue3——父子组件传值
    Git 安装和基础命令、IDEA 基础操作
    微信小程序用canvasToTempFilePath压缩图片,开发工具压缩正常而真机上比例失调
  • 原文地址:https://blog.csdn.net/shalimu/article/details/127979850