明解java柴田望洋逻辑或、逻辑与的简单使用

柴田讲逻辑运算符“或”和“与”,这两个运算符,在数学上用过很多次了,判断必要条件、充分条件用。我现在也没有记住必要条件和充分条件之间的区别。有没有什么记忆的小技巧?不知道我之前是怎么学的,反正一直没记住。刚才查了资料,首先必要和充分说的是条件,为什么要强调这个?因为条件和结果是两个角度,如果你在说条件,那就是满足条件或不满足条件,结果会怎样。这在暗示一个推导顺序。指定条件和结果,意思是指定推导的顺序。为了简化顺序描述还能表示条件和结果的关系,使用必要条件、充分条件、充要条件这些术语。

 

必要条件是说,如果没有a,一定没b,如果有a ,不一定有b,如果有b ,一定有a。这样我还是记不住必要条件的,还要再简化一下,结果b能推出条件a,但有a不一定有b。不行,还是记不住。父亲是儿子的必要条件。父亲是条件,儿子是结果。有儿子一定有父亲,有父亲不一定有儿子。这让我想到远山启的逆定理的推导,也是在说这个关系。他说,下雨是坏天气。但坏天气不是下雨。坏天气是下雨的必要条件。可以从范围的大小来看,应老师用的例子是省和市的大小,宁波市是浙江省,浙江省不是宁波市。浙江省是宁波市的必要条件。从大小的角度看必要条件是合适的。必要条件看大小,大是小的必要条件。

 

下次再有人给我扯必要条件,我应该立马想到一句话,大是小的必要条件,含义着小能推出大,但大未必推出小。

 

继续说柴田的逻辑或和逻辑与,他的习惯,先来个代码,再讲解内容。

if (n >= 3 && n <=5)

System.out.println("Spring");

if(n >= 6 && n <=8)

System.out.println("Summer");

if(n >= 9 && n <=11)

System.out.println("Autumn");

if(n == 12 || n ==1 || n==2)

System.out.println("Winter");

这是读入一个月份,然后判断季节,n >= 3 && n <=5这是说满足这两个条件之后,表达式为true,执行语句。否则执行下一个if。&& 是逻辑与,读音是and,在java中的用法区别于一个& ,具体怎么区别不知道。第七章的内容。

 

n== 12 || n ==1 || n==2满足其中一个条件,表达式就是true,||是逻辑或。

 

柴田说,有一个短路求值的问题,对于&&,如果左操作数为false,程序不再判断右操作数。对于||,如果左操作数为true,程序不再判断后面的操作数。这就是短路求值。英文是short circuit evaluation,我肯定是记不住这个英文的,罗列出来留着复习吧。

柴田布置一个简单的题目,判断成绩等级,如果是0-59则不及格,60-69及格,70-79良,80-100优。

刚开始我想着能不能在最后用一个else,这样可以省去(n >= 80 && n <=100

不行,漏想了一种情况。代码如下

if (n >= 0 && n <=59)

System.out.println("不及格");

if(n >= 60 && n <=69)

System.out.println("及格");

if(n >= 70 && n <=79)

System.out.println("良");

//if(n >= 80 && n <=100)

// System.out.println("优");

else 

 

System.out.println("优");

 

输入0-69,会出现两个结果,总是会输出优。一方面这不是我想要的结果,另一方面,为什么会出现这样的结果呢?

 

上次的笔记说,else有一个就近原则,和上一个if是配对的。这是说,如果数值小于70,程序先挨个判断if,输出一个语句。程序判断到if(n >= 70 && n <=79)之后,会跳到else执行一个优。因为if里面的判断为false,外面的else就是true,会执行。

 

如果加上代码块呢?逐个尝试{}的位置,都不对,不是想要的结果,最后我放弃使用else了。还是用

if (n >= 0 && n <=59)

System.out.println("不及格");

if(n >= 60 && n <=69)

System.out.println("及格");

 

if(n >= 70 && n <=79)

System.out.println("良");

if(n >= 80 && n <=100)

System.out.println("优");

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值