1、第第三章三章运算符和条件结构运算符和条件结构广西机电职业技术学院广西机电职业技术学院 计算机与信息工程系计算机与信息工程系回顾 n找出错误并更正n输出结果是什么?int radius=10;double high=1.9;int vol=3.14*radius*radius*high;需进行强制类型转换需进行强制类型转换 int num1=19;int num2=89;int temp;temp=num1;num1=num2;num2=temp;System.out.println(num1);System.out.println(num2);int vol=(int)(3.14*radius
2、*radius*high);8919借助一个中间变量互换借助一个中间变量互换两个变量的值两个变量的值n掌握boolean类型的用法n掌握关系运算符和逻辑运算符n掌握if条件结构n使用基本if条件结构n使用多重if条件结构n掌握switch结构的用法本章目标用什么数据类型能表示用什么数据类型能表示一件商品是真货还是假货一件商品是真货还是假货一个条件成立还是不成立一个条件成立还是不成立boolean(布尔布尔)类型类型boolean类型的值:类型的值:真:真:true假:假:falseboolean类型只有这两个值类型只有这两个值为什么需要boolean类型1、用、用boolean类型描述:学员张
3、三的考试成绩是类型描述:学员张三的考试成绩是否比学员李四(否比学员李四(80分)高分)高如何使用boolean类型int liSi=80;/学员李四成绩学员李四成绩boolean isBig;/声明一个声明一个boolean类型的变量类型的变量 Scanner input=new Scanner(System.in);System.out.print(输入学员张三成绩输入学员张三成绩:);/提示要输入学员张三的成绩提示要输入学员张三的成绩int zhangSan=input.nextInt();/输入张三的成绩输入张三的成绩 isBig=zhangSan liSi;/将比较结果保存在将比较结果
4、保存在boolean变量中变量中 System.out.println(张三成绩比李四高吗张三成绩比李四高吗?+isBig);/输出比较结果输出比较结果存储比较结果存储比较结果条件表达式条件表达式从控制台接收一从控制台接收一个整数个整数比较高低、大小、长短比较高低、大小、长短张三的考试成绩是否比李四高张三的考试成绩是否比李四高大象是否比乌龟更长寿大象是否比乌龟更长寿篮球跟地球一样大吗篮球跟地球一样大吗如何比较?如何比较?使用使用关系运算符关系运算符可以比较高低、大小、长短可以比较高低、大小、长短为什么使用关系运算符什么是关系运算符n常用的关系运算符有哪些:n,=,=大象的寿命大象的寿命 李四的
5、成绩李四的成绩 假假令狐冲每次考试成绩令狐冲每次考试成绩=90分分 真真篮球的大小篮球的大小=地球的大小地球的大小 假假由此看出关系运算符关系运算符的作用:的作用:用来做比较运算用来做比较运算比较后结果:比较后结果:boolean类型类型 2、如果令狐冲的、如果令狐冲的Java考试成绩大于考试成绩大于90分,师父就奖励他分,师父就奖励他一本武功秘笈一本武功秘笈为什么需要if条件结构使用使用if条件结构条件结构可以解决可以解决什么是if条件结构nif条件结构是根据条件判断之后再做处理if(条件条件)/语句语句 if(令狐冲令狐冲Java成绩成绩 90)师父奖励令狐冲;师父奖励令狐冲;结合问题结合
6、问题2基本的基本的if条件结构条件结构表达表达式式语句语句假假真真如何使用if条件结构6-1 回顾:如果令狐冲的回顾:如果令狐冲的Java考试成绩大于考试成绩大于90分,师父就奖分,师父就奖励他励他独孤九剑独孤九剑剑谱剑谱使用使用if条件结构该如何实现条件结构该如何实现import java.util.Scanner;public class Hello2 public static void main(String args)Scanner input=new Scanner(System.in);System.out.print(输入令狐冲的输入令狐冲的Java成绩成绩:);int sco
7、re=input.nextInt();/令狐冲的令狐冲的Java成绩成绩 if(score 90)/判断是否大于判断是否大于90分分 System.out.println(师父说师父说:不错,给你不错,给你独孤九剑独孤九剑剑谱剑谱);如何使用if条件结构6-2 3、令狐冲、令狐冲Java成绩大于成绩大于90分,而且音乐成绩大于分,而且音乐成绩大于80分,分,师父奖励他;或者师父奖励他;或者Java成绩等于成绩等于100分,音乐成绩大于分,音乐成绩大于70分,师父也可以奖励他分,师父也可以奖励他分析:怎样把多个条件连接起来?分析:怎样把多个条件连接起来?使用使用逻辑运算符逻辑运算符运算符表达式说
8、明&条件1&条件2仅仅两个条件同时为真,结果为真|条件1|条件2只要两个条件有一个为真,结果为真!条件条件为真时,结果为假条件为假时,结果为真条件1 条件2两个条件相同为真,否则为假问题问题3的的条件如何编写条件如何编写如何使用if条件结构6-3多使用小括号多使用小括号()控制优先级控制优先级score1 90&score2 80|score1=100&score2 70运算符的优先级:运算符的优先级:最高的优先级:小括号,即最高的优先级:小括号,即()最低的优先级:赋值运算符,即最低的优先级:赋值运算符,即=优先级顺序:!优先级顺序:!算术运算符算术运算符比较运算符比较运算符&|public
9、 class HelloAccp3 public static void main(String args)int score1=100;/令狐冲的语文成绩令狐冲的语文成绩 int score2=72;/令狐冲的历史成绩令狐冲的历史成绩 if (score1 90&score2 80)|(score1=100&score2 70)System.out.println(师父说师父说:不错,给你不错,给你独孤九剑独孤九剑剑谱剑谱);如何使用if条件结构6-4 4、如果令狐冲考试成绩大于、如果令狐冲考试成绩大于90分,师父就奖励他分,师父就奖励他独孤九剑独孤九剑,否则师父就罚他上思过崖闭关思过,否则
10、师父就罚他上思过崖闭关思过使用两个基本使用两个基本if条件结构条件结构使用使用if-else条件结构条件结构实现实现if(score 90)System.out.println(师父说师父说:不错,给你不错,给你独孤九剑独孤九剑剑谱剑谱);if(score 90)师父奖励令狐冲;师父奖励令狐冲;else 师父罚他闭关思过;师父罚他闭关思过;结合问题结合问题4真真表达表达式式语句语句1假假语句语句2使用使用if-else条件结构解决问题条件结构解决问题4public class Hello4 public static void main(String args)int score=89;/令狐
11、冲的语文成绩令狐冲的语文成绩 if(score 90)System.out.println(师父说师父说:不错,给你不错,给你独孤九剑独孤九剑剑谱剑谱);else System.out.println(师父说师父说:不孝徒,上思过崖闭关思过去吧不孝徒,上思过崖闭关思过去吧);如何使用if条件结构6-6赋值运算符n赋值运算符的运算顺序是从右至左的:运算符运算符说说 明明=赋值,将右侧的值赋给左侧的变量赋值,将右侧的值赋给左侧的变量+=相加并赋值,如:相加并赋值,如:a+=b等价于等价于a=a+b-=相减并赋值,如:相减并赋值,如:a-=b等价于等价于a=a b*=相乘并赋值,如:相乘并赋值,如:
12、a*=b等价于等价于a=a*b/=相除并赋值,如:相除并赋值,如:a/=b等价于等价于a=a/b%=取模并赋值,如:取模并赋值,如:a%=b等价于等价于a=a%b条件运算符?:n条件运算符是三元运算符;n它的一般形式是:表达式1?表达式2:表达式3n根据表达式1的结果来判断执行表达式2还是表达式3,如果表达式1的结果为true,则执行表达式2,否则执行表达式3;n条件运算符在某些情况下能够替代小型的ifelse语句。条件运算符?:If(x0)y=1;Else y=-1;Y=(x0)?1:-1;等价等价运算符的优先级n很多情况下,一个表达式由多个运算符组成,优先级决定运算符的计算顺序:优先级优先
13、级运运 算算 符符1括号括号:()和和2一元运算符:一元运算符:-、+(前置)、(前置)、-(前置)、!(前置)、!3算术运算符:算术运算符:*、/、%、+和和-4关系运算符:关系运算符:、=、=90:优秀:优秀 成绩成绩=80:良好:良好 成绩成绩=60:中等:中等 成绩成绩=90)System.out.println(优秀优秀);else if(score=80)System.out.println(良好良好);else if(score=60)System.out.println(中等中等);else System.out.println(差差);大于等于大于等于90分分大于等于大于等于
14、60分,小于分,小于80分分小于小于60分分大于等于大于等于80分,小于分,小于90分分为什么使用switch结构 6、令狐冲参加比武大会如果获得第一名,将出任武林盟主如果获得第一名,将出任武林盟主如果获得第二名,将出任武当掌门如果获得第二名,将出任武当掌门如果获得第三名,将出任峨嵋掌门如果获得第三名,将出任峨嵋掌门否则,将被逐出师门否则,将被逐出师门使用使用if条件结构如何实现条件结构如何实现 实现实现代码代码更好的解决办法:使用更好的解决办法:使用switch结构结构解决解决switch(表达式表达式)case 常量常量 1:语句语句;break;case 常量常量 2:语句语句;brea
15、k;default:语句语句;switch结构什么是switch结构计算表达式的值计算表达式的值如果等于常量如果等于常量1 如果等于常量如果等于常量2 如果没有找到匹配的值如果没有找到匹配的值 使用使用switch结构解决结构解决问题问题6 如何使用switch结构int mingCi=1;switch(mingCi)case 1:System.out.println(出任武林盟主出任武林盟主);break;case 2:System.out.println(出任武当掌门出任武当掌门);break;case 3:System.out.println(出任峨嵋掌门出任峨嵋掌门);break;de
16、fault:System.out.println(被逐出师门被逐出师门);第一名的情况下第一名的情况下第二名的情况下第二名的情况下第三名的情况下第三名的情况下其他情况下其他情况下常见错误3-1int mingCi=1;switch(mingCi)case 1:System.out.println(出任武林盟主出任武林盟主);case 2:System.out.println(出任武当掌门出任武当掌门);case 3:System.out.println(出任峨嵋掌门出任峨嵋掌门);default:System.out.println(被逐出师门被逐出师门);输出结果是什么?输出结果是什么?如果
17、需要每个如果需要每个case执行完后跳出,执行完后跳出,在每个在每个case后不要忘记写后不要忘记写break;常见错误3-2 int mingCi=1;switch(mingCi)case 1:System.out.println(出任武林盟主出任武林盟主);case 2:System.out.println(出任武当掌门出任武当掌门);case 2:System.out.println(出任峨嵋掌门出任峨嵋掌门);default:System.out.println(被逐出师门被逐出师门);case后面的常量必须各不相同后面的常量必须各不相同代码错误代码错误常见错误3-3String da
18、y=星期一星期一;switch(day)case 星期一星期一:System.out.println(星期一:青菜星期一:青菜 );break;case 星期二星期二:System.out.println(星期二:鱼星期二:鱼 );break;default:switch后面小括号中表达式的后面小括号中表达式的值必须是整型或字符型值必须是整型或字符型代码错误代码错误比较switch和多重if结构n相同点n不同点nswitchn多重if都可以实现多分支结构都可以实现多分支结构只能处理等值的条件判断,且条件是整型变量或字符只能处理等值的条件判断,且条件是整型变量或字符变量的等值判断变量的等值判断处
19、理在处理在else部分还包含其它部分还包含其它if结构,特别适合某个变结构,特别适合某个变量处于某个区间时的情况量处于某个区间时的情况格式化控制台输出与字符串n语法:见教材P66 System.out.printf(format,item1,itemk)n例子:int c=5;double a=45.56;System.out.printf(“c=%d,a=%f”,c,a);display:c=5,a=45.56 小结2n输入赵本山的考试成绩,显示所获奖励n成绩=100分,爸爸给他买辆车n成绩=90分,妈妈给他买MP4n90分成绩=60分,妈妈给他买本参考书n成绩60分,什么都不买n张三为他的手机设定了自动拨号n按1:拨爸爸的号n按2:拨妈妈的号n按3:拨爷爷的号n按4:拨奶奶的号 编程实现此业务总结n什么数据类型可以描述真和假?n描述几种分支结构的语法和执行过程?n什么情况下会使用多重if条件结构?n多重if条件结构和switch结构的区别和适用场合是什么?