第十四届蓝桥杯集训——JavaC组第七篇——逻辑运算符

简介: 第十四届蓝桥杯集训——JavaC组第七篇——逻辑运算符

第十四届蓝桥杯集训——JavaC组第七篇——逻辑运算符


逻辑运算符

  • &&逻辑与
  • ‖逻辑或
  • !逻辑非

逻辑运算与位运算不同,逻辑运算的与和或都是两个与或的符号,当然,如果单独一个就能不能这么叫了,应该叫位运算符,位运算符在讲完进制转换的时候我再来将,大家能更好的理解,不然肯定都蒙圈了。

逻辑与

&&两个与的符号,代表逻辑与,逻辑与前后两个表达式如果都为true则结果为true,如果有任何一个为false则结果为false;

逻辑与判断

A 符号 B 等于 结果
False && False = False
False && True = False
True && False = False
True && True = True

题目,判断某个月份是否符合地球公转周期。

分析,满足地球公转周期的月份是在1月~12月内,故而我们需要判断1<=month<=12,那么,我们就可以根据要求列出布尔表达式的写法,写法如下:

package com.item.action;
public class Action {
  public static void main(String[] args) {
    // 满足地球公转周期的月份
    int month = 5;// 判断月份是否在地球公转周期内
    //条件1、大于0
    boolean start = month > 0;
    //条件2、小于等于12,或直接小于13,因为是整数都行
    boolean end = month <= 12;
    //使用逻辑与判断,因为必须两个都满足才能是符合地球公转周期的月份
    boolean result = start && end;
    System.out.println(result);
  }
}

输出结果:

输出的结果是true代表5月份满足月份要求,故而此程序成立,咱们没有写错。

逻辑或

||两个竖线代表逻辑或,逻辑或的前后两个表达式只要有一个是true,结果就是true,当然,两个true那就更是true了,但是如果两个都是false,那就没办法了,肯定返回false了。

逻辑或运算

A 符号 B 等于 结果
False || False = False
False || True = True
True || False = True
True || True = True

示例:

我们使用一个特殊的表达式,判断x是否在x<-5,x>12的范围内。

package com.item.action;
public class Action {
  public static void main(String[] args) {
    // 这里先设一个值x=10,肯定不在{x<-5,x>12}中
    int x = 10;
    boolean left = x < -5;
    boolean right = x > 12;
    boolean result = left || right;
    System.out.println(result);
  }
}

结果如下:

!,逻辑非,就是代表不,咱们在关系运算符中看到过,有一个叫做【!=】不等于的符号,与这个非有些类似,但是不同的是他是一元运算符。不等于是二元运算符。并且非是控制一个变量的,不等于是处理两个变量的。

测试:

package com.item.action;
public class Action {
  public static void main(String[] args) {
    // 这里先设一个值x=10,肯定不在{x<-5,x>12}中
    int x = 10;
    boolean left = x < -5;
    boolean right = x > 12;
    boolean result = left || right;
        //添加了一个!
    System.out.println(!result);
  }
}

当我们在结果前添加了一个【!】非的符号时发现,我们出现的结果反了过来,证明非的作用也就相当于取反操作了。

逻辑运算法优先级

!>&&>||

三个符号的优先级与C语言的类似,但是他们都没有()的级别高。

练习题:

我们用判断闰年的案例来练习逻辑运算符的使用:

1582年以来的置闰规则:

普通闰年:公历年份是4的倍数,且不是100的倍数的,为闰年(如2004年、2020年等就是闰年)。

世纪闰年:公历年份是整百数的,必须是400的倍数才是闰年(如1900年不是闰年,2000年是闰年)。

1582年以前的惯例:四年一闰;如果公元A年的A(正数)能被4整除,那么它就是闰年;如果公元前B年的B(正数)除以4余1,那么它也是闰年。

解析:

1、能被4整除,但不能被100整除,所以这两个之间的关系是【&&】。

2、世纪闰年是【1】的基础上需要加上是否能被400整除的判断,关系是【||】。

我们将两句分析编辑成代码,就能看到如下的内容了:

package com.item.action;
import java.util.Scanner;
public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int year = sc.nextInt();
    sc.close();
    boolean one = year % 4 == 0;
    boolean two = year % 100 != 0;
    boolean three = year % 400 == 0;
    boolean result = one && two || three;
    System.out.println(result);
  }
}
相关文章
|
18天前
|
人工智能 算法 Java
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1005 数字游戏
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1005 数字游戏
60 0
|
18天前
|
Java C语言 C++
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1000 kAc给糖果你吃
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1000 kAc给糖果你吃
44 0
|
18天前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-999 数的潜能
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-999 数的潜能
44 0
|
18天前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-997 粘木棍
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-997 粘木棍
54 0
|
18天前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1007 印章
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1007 印章
32 0
|
18天前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1006 拿金币
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1006 拿金币
27 0
|
18天前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1004 无聊的逗
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1004 无聊的逗
50 0
|
18天前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1003 礼物
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1003 礼物
56 0
|
18天前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1001 跳马
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1001 跳马
30 0
|
18天前
|
移动开发 算法 Java
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-998 娜神平衡
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-998 娜神平衡
44 0