




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1语言程序设计第三章 控制语句西安电子科技大学 通信工程学院1实用精品课件实用精品课件PPT2第三章 控制语句n学习目标l声明布尔类型和书写布尔表达式l区分条件和非条件的&和|运算符l使用布尔表达式控制条件语句l使用if和嵌套if语句实现条件控制l使用switch语句实现条件控制l使用条件运算符书写表达式l使用System.out.printf方法显示格式化的输出以及使用String.format方法格式化字符串l了解操作数执行顺序、操作符优先级和结合方向2实用精品课件PPT3boolean类型及操作符nboolean(布尔)类型lJava的基本数据类型(同int、double一样)l只有两个
2、取值:true(真)、false(假)l整型数据和boolean型不能相互转换c/c+中是可以相互转换的。在中是可以相互转换的。在c/c+中,数字、指针都可以充中,数字、指针都可以充当当boolean值。但是这种灵活性带来了潜在的灾难,无数程序值。但是这种灵活性带来了潜在的灾难,无数程序的的bug出在这里出在这里3实用精品课件PPT4n比较运算符(Comparison Operator)l又称为关系运算符(又称为关系运算符(Relational Operator),用于两),用于两个值的比较个值的比较l比较的结果是一个比较的结果是一个boolean值。如:值。如:boolean b = (1
3、2);比较运算符比较运算符含义含义小于小于大于大于=大于等于大于等于=等于等于!=不等于不等于注:注:1、相等的比较运算符是两个、相等的比较运算符是两个 等号(等号(=)2、字符也可以进行比较。实际、字符也可以进行比较。实际 上是对字符的上是对字符的Unicode进行进行 比较。如:比较。如:(a A) = true4实用精品课件PPT5nBoolean运算符l又称为逻辑运算符(又称为逻辑运算符(Logical Operator)l对对boolean值运算,得到新的值运算,得到新的boolean值值Boolean运算符运算符名称名称含义含义!非(非(NOT)取反。取反。true false,
4、false true&与(与(AND)两个运算符都为两个运算符都为true时,结果才为时,结果才为true|或(或(OR)当两个运算符至少有一个为当两个运算符至少有一个为true时,结果才为时,结果才为true异或(异或(XOR) 当两个运算符不一样时,结果才为当两个运算符不一样时,结果才为true5实用精品课件PPT66实用精品课件PPT7n“非”运算(!)的真值表l取反取反。true false, false truen“与”运算(&)的真值表l两个运算符都为两个运算符都为true时,结果才为时,结果才为truep!pExampletruefalse!(12) is truep1p2p1
5、& p2Examplefalsefalsefalse(43) & (32) is falsefalsetruefalse(42) is falsetruefalsefalse(43) | (33) & (32) is true7实用精品课件PPT8n“或”运算(|)的真值表l当两个运算符至少有一个为当两个运算符至少有一个为true时,结果才为时,结果才为truen“异或”运算()的真值表l当两个运算符不一样时,结果才为当两个运算符不一样时,结果才为truep1p2p1 p2Examplefalsefalsefalse(43) (32) is falsefalsetruetrue(42) is
6、truetruefalsetrue(43) | (33) (32) is falsep1p2p1 | p2Examplefalsefalsefalse(43) | (32) is falsefalsetruetrue(42) is truetruefalsetrue(43) | (33) | (32) is true8实用精品课件PPT9n与、或的短路运算法则l与(与(&)运算:一旦有一个操作数为)运算:一旦有一个操作数为false,则直接得,则直接得到结果到结果false,后面的表达式不再计算。,后面的表达式不再计算。如:如:(43) & (1/0 =1) 不会产生不会产生“被零除被零除”错
7、误。因为错误。因为(43) | (1/0 =1) 不会产生不会产生“被零除被零除”错误。因为错误。因为(43)为为true,最终的结果就是,最终的结果就是true,程序不会再计算,程序不会再计算(1/0 =1)了了9实用精品课件PPT10例:判断是不是闰年n闰年的定义:l该年可以被该年可以被4整除而不能被整除而不能被100整除,或者可以被整除,或者可以被400整除,那就是闰年整除,那就是闰年import javax.swing.JOptionPane;public class LeapYearVerifier /* Main method */public static void main(S
8、tring args) / 用户输入年份用户输入年份 String yearString = JOptionPane.showInputDialog(Enter a year); int year = Integer.parseInt(yearString); / 是否为闰年是否为闰年 boolean isLeapYear = ( (year % 4 = 0) & (year % 100 != 0) ) | (year % 400 = 0); / 显示显示 String display = Year + year + isLeapYear = + isLeapYear; JOptionPane
9、.showMessageDialog(null, display);10实用精品课件PPT11例:简单的数学学习工具n程序随机产生两个一位整数number1和number2,显示给学生如“What is 7 + 9 ?”,学生在输入对话框中敲入答案之后,程序显示一个消息对话框,判定答案是true还是false。import javax.swing.JOptionPane;public class AdditionTest /* Main method */public static void main(String args) / 产生两个随机数(产生两个随机数(int类型)类型) int n
10、1 = (int) (System.currentTimeMillis() % 10); int n2 = (int) (System.currentTimeMillis() * 7 % 10); / 提示用户输入结果提示用户输入结果 String answerString = JOptionPane.showInputDialog( What is + n1 + + + n2 + ?); int answer = Integer.parseInt(answerString); / 计算结果计算结果 String result = n1 + + + n2 + = + answer + is +
11、 (n1 + n2 = answer); JOptionPane.showMessageDialog(null, result);11实用精品课件PPT12位运算符n当操作整型数据时,可以使用位运算符(即:按位运算)l二进制级别的运算二进制级别的运算l当用于当用于boolean运算时,运算时,& 和和 | 会产生会产生boolean值,结果同值,结果同 & 和和 | 相同,但是不会进行短路运算相同,但是不会进行短路运算位运算符位运算符名称名称含义含义非(非(NOT)整数按位取反,整数按位取反,10, 01&与(与(AND)两个整数,按位进行两个整数,按位进行“与与”操作操作|或(或(OR)两个
12、整数,按位进行两个整数,按位进行“或或”操作操作异或(异或(XOR) 两个整数,按位进行两个整数,按位进行“异或异或”操作操作12实用精品课件PPT13n位运算符举例表达式表达式结果结果33: 000000113: 11111100 = -4 (高位为高位为1,说明是负数。先减,说明是负数。先减1,然后取反,然后取反)11 & 4 11: 00001011& 4: 00000100- 0: 000000002 | 4 2: 00000010| 4: 00000100- 6: 000001109 5 9: 00001001 5: 00000101- 12: 0000110013实用精品课件PPT
13、14n&运算符的其他用途l测试测试一个数的某位是否为一个数的某位是否为 1x & 4 = 0,说明,说明 x 的第的第 2 位为位为 0 x & 8 !=0,说明,说明 x 的第的第 3 位位为为 1l截取一个数的低截取一个数的低4位位0 x7B & 0 x0F = 0 x0Bl截取一个数的高截取一个数的高4位位0 x7B & 0 xF0 = 0 x7014实用精品课件PPT15n& 、| 不会进行短路运算的例子l例例1:如果:如果x=1,执行:,执行:(x 1) & (x+ 1) & (x+ x+) 后,后,x的值是多少?的值是多少? (x = 2)l例例4:如果:如果x=1,执行:,执行:
14、(1 = x) |(10 x+) 后,后,x的值是多少?的值是多少? (x = 1)n结论:虽然 &, | 也可以进行 boolean 运算,但是不要这么做!15实用精品课件PPT16n移位运算符位运算符位运算符名称名称举例举例左移位左移位0 x01 4带符号的右移位带符号的右移位0 x3F 2 = 15-1 2 = -1 (-1 = 0 xFFFFFFFF)-8 2 = -2 (-8 = 0 xFFFFFFF8) (-2 = 0 xFFFFFFFE)无符号的右移位无符号的右移位-1 2 = 1073741823 (0 x3FFFFFFF)16实用精品课件PPT17选择语句nif语句nswit
15、ch语句n条件运算符17实用精品课件PPT18简单的if语句if (boolenExpression) statement(s);booleanexpressionstatement(s)truefalseif ( (i0) & (i0) & (i0) & (i0) & (i= 90.0) grade = A;else if (score = 80.0) grade = B; else if (score = 70.0) grade = C; else if (score = 60.0) grade = D; else grade = F;if (score = 90.0) grade = A
16、;else if (score = 80.0) grade = B;else if (score = 70.0) grade = C;else if (score = 60.0) grade = D;else grade = F;等效于等效于建议采用这种书写风格:建议采用这种书写风格: 避免了深层缩进;避免了深层缩进; 程序可读性好程序可读性好22实用精品课件PPT23n跟踪这个程序:if (score = 90.0) grade = A;else if (score = 80.0) grade = B;else if (score = 70.0) grade = C;else if (sco
17、re = 60.0) grade = D;else grade = F;假设 score = 72.0比较结果为 false23实用精品课件PPT24if (score = 90.0) grade = A;else if (score = 80.0) grade = B;else if (score = 70.0) grade = C;else if (score = 60.0) grade = D;else grade = F;n跟踪这个程序:假设 score = 72.0比较结果为 false24实用精品课件PPT25if (score = 90.0) grade = A;else if
18、(score = 80.0) grade = B;else if (score = 70.0) grade = C;else if (score = 60.0) grade = D;else grade = F;n跟踪这个程序:假设 score = 72.0比较结果为 true25实用精品课件PPT26if (score = 90.0) grade = A;else if (score = 80.0) grade = B;else if (score = 70.0) grade = C;else if (score = 60.0) grade = D;else grade = F;n跟踪这个程
19、序:假设 score = 72.0grade = C26实用精品课件PPT27if (score = 90.0) grade = A;else if (score = 80.0) grade = B;else if (score = 70.0) grade = C;else if (score = 60.0) grade = D;else grade = F;Next statementn跟踪这个程序:假设 score = 72.0退出 if 语句27实用精品课件PPT28nelse 和 if 的匹配lelse子句与同一块中离得最近的if子句相匹配int i = 1;int j = 2;int
20、 k = 3;if (i j) if (i k) System.out.println(A);else System.out.println(B);int i = 1;int j = 2;int k = 3;if (i j) if (i k) System.out.println(A); else System.out.println(B);等效于等效于28实用精品课件PPT29如果想让如果想让else同第一个同第一个if匹配,匹配,则需要使用花括号:则需要使用花括号:推荐写法:推荐写法:int i = 1;int j = 2;int k = 3;if (i j) if (i k) Syste
21、m.out.println(A);else System.out.println(B);int i = 1;int j = 2;int k = 3;if (i j) if (i k) System.out.println(A); else System.out.println(B);29实用精品课件PPT30n提示1:n提示2:if (number % 2 = 0) even = true;else even = false;等效于等效于boolean even = (number % 2 = 0);if (even = true) System.out.println(.);等效于等效于if
22、 (even) System.out.println(.);建议使用这种形式建议使用这种形式因为如果不小心写为:因为如果不小心写为:if (even = true) System.out.println(.);将很难被发现。将很难被发现。30实用精品课件PPT31举例:个人所得税计算n个人所得税计算方法(2011.9.1版):l起起征点征点:3500元元l收入收入- -起征点,差值部分:起征点,差值部分:1、不、不超过超过1500元的部分,元的部分,税率税率3%2、超过超过1500元元至至4500元的部分,税率元的部分,税率10%3、超过超过4500元元至至9000元的部分,元的部分,税率税率
23、20%4、超过超过9000元元至至35000元的部分,税率元的部分,税率25%5、超过超过35000元元至至55000元的部分,元的部分,税率税率30%6、超过超过55000元元至至80000元的部分,税率元的部分,税率35%7、超过、超过80000元的部分,税率元的部分,税率45%n如某人的收入为10000元,需要缴纳的个人所得税为:l10000 - 3500 = 6500 l1500 * 3% + (4500 - 1500) * 10% + (6500 - 4500) * 20%= 45 + 300 + 400 = 745 元元31实用精品课件PPT32n简便算法:ldelta = 月收入
24、月收入 - - 起征点,如果在起征点,如果在:l0 1500: delta * 3%l1500 4500: delta * 10% - 105l4500 9000: delta * 20% - 555l9000 35000: delta * 25% - 1005l35000 55000: delta * 30% - 2755l55000 80000: delta * 35% - 5505l 80000: delta * 45% - 1350532实用精品课件PPT33import javax.swing.JOptionPane;public class PersonalTaxCalculato
25、r public static void main(String args) String salaryString = JOptionPane.showInputDialog( 请输入月薪(个税起征请输入月薪(个税起征点点:3500)); double salary = Double.parseDouble(salaryString); double delta = salary - 3500; double tax = 0; if (delta 0 & delta 1500 & delta 4500 & delta 9000 & delta 35000 & delta 55000 & de
26、lta = 80000) tax = delta * 0.35 - 5505; else tax = delta * 0.45 - 13505; / 取小数点后取小数点后2位,并输出位,并输出 tax = (int)(tax + 0.005) * 100) / 100.0; JOptionPane.showMessageDialog(null, Tax = + tax); 33实用精品课件PPT34Switch 语句switch (switch-expression) case value1: statement(s)1; break; case value2: statement(s)2;
27、break; . . case valueN: statement(s)N; break; default: default-statement(s);表达式表达式 switch-expression必须能计算必须能计算出一个出一个char、byte、short或或int型值,型值,并且必须用括号括住并且必须用括号括住它它注:注:long类型不能用在类型不能用在switch中中value1,valueN必须与必须与switch-expression的值具有相同的值具有相同的数据类型的数据类型value1,valueN都是常量表达式,也就是说在都是常量表达式,也就是说在表达式中不能有变量,如表达
28、式中不能有变量,如1+x是是不容许的不容许的当当switch-expression的值与的值与case语语句的值相匹配时,将从该句的值相匹配时,将从该case语语句开始执行,直到遇到一个句开始执行,直到遇到一个break语句或到达语句或到达switch语句的末端语句的末端34实用精品课件PPT35switch (switch-expression) case value1: statement(s)1; break; case value2: statement(s)2; break; . . case valueN: statement(s)N; break; default: defaul
29、t-statement(s);关键字关键字break是可选的。是可选的。break语句可以立即终止整个语句可以立即终止整个switch语句。语句。如果如果break语句没有出现,那么执行下一条语句没有出现,那么执行下一条case 语句语句默认情况(默认情况(default)是可选的,)是可选的,它用来执行指定情况与它用来执行指定情况与switch-expression都不匹配时的操作都不匹配时的操作case语句是顺序检测的,这些语句是顺序检测的,这些case的顺序(包括默认情况)的顺序(包括默认情况)是无所谓的。是无所谓的。但是,将所有情况按照逻辑顺序排列并把默认情况放在最后是良好的编程风格但
30、是,将所有情况按照逻辑顺序排列并把默认情况放在最后是良好的编程风格。35实用精品课件PPT36n跟踪 switch 语句(没有 break)switch (ch) case a: System.out.println(ch); case b: System.out.println(ch); case c: System.out.println(ch);假设 ch = a36实用精品课件PPT37switch (ch) case a: System.out.println(ch); case b: System.out.println(ch); case c: System.out.printl
31、n(ch);n跟踪 switch 语句(没有 break)ch = a37实用精品课件PPT38switch (ch) case a: System.out.println(ch); case b: System.out.println(ch); case c: System.out.println(ch);n跟踪 switch 语句(没有 break)执行这一行:输出 a38实用精品课件PPT39switch (ch) case a: System.out.println(ch); case b: System.out.println(ch); case c: System.out.prin
32、tln(ch);n跟踪 switch 语句(没有 break)执行这一行:输出 a39实用精品课件PPT40switch (ch) case a: System.out.println(ch); case b: System.out.println(ch); case c: System.out.println(ch);n跟踪 switch 语句(没有 break)执行这一行:输出 a40实用精品课件PPT41switch (ch) case a: System.out.println(ch); case b: System.out.println(ch); case c: System.ou
33、t.println(ch);Next statementn跟踪 switch 语句(没有 break)执行下一条语句41实用精品课件PPT42n跟踪 switch 语句(有 break)switch (ch) case a: System.out.println(ch); break; case b: System.out.println(ch); break; case c: System.out.println(ch); break;假设 ch = a42实用精品课件PPT43switch (ch) case a: System.out.println(ch); break; case b
34、: System.out.println(ch); break; case c: System.out.println(ch); break;n跟踪 switch 语句(有 break)ch = a43实用精品课件PPT44switch (ch) case a: System.out.println(ch); break; case b: System.out.println(ch); break; case c: System.out.println(ch); break;n跟踪 switch 语句(有 break)执行这一行:输出 a44实用精品课件PPT45switch (ch) cas
35、e a: System.out.println(ch); break; case b: System.out.println(ch); break; case c: System.out.println(ch); break;n跟踪 switch 语句(有 break)执行break,跳出switch45实用精品课件PPT46switch (ch) case a: System.out.println(ch); break; case b: System.out.println(ch); break; case c: System.out.println(ch); break;Next sta
36、tementn跟踪 switch 语句(有 break)执行下一条语句46实用精品课件PPT47条件运算符n格式:n例:(booleanExp) ? exp-for-true : exp-for-falsebooleanExp 为 true 时执行booleanExp 为 false 时执行if (x 0) abs_x = -1 * x;else abs_x = x;等效于等效于abs_x = (x0)?(-1*x):x;if (num % 2 = 0) System.out.println(num + is even);else System.out.println(num + is odd
37、);等效于等效于System.out.println( (num % 2 = 0)? num + is even : num + is odd);47实用精品课件PPT48n条件运算符又称为“三元运算符”,也是Java中唯一的一个三元运算符l一元运算一元运算符:符:! + -l二元运算符:二元运算符:+ - * / %48实用精品课件PPT49运算符优先级运算符运算符含义含义var+, var-后置自增后置自增/自减运算符自减运算符+var, -var, +var,-var !正正/负数标识符负数标识符前置自增前置自增/自减运算符自减运算符一元运算符一元运算符*, /, %乘、除、求余运算符乘
38、、除、求余运算符+, -加减运算符加减运算符 移位运算符移位运算符, , = instanceof关系运算符关系运算符=, !=相等相等/不等比较运算符不等比较运算符&按位与运算符按位与运算符按位异或运算符按位异或运算符|按位或运算符按位或运算符&逻辑与运算符逻辑与运算符|逻辑或运算符逻辑或运算符=, +=, -=, *=, /=, %=&=, =, |=, =, = 赋值运算符赋值运算符高高低低49实用精品课件PPT50运算符的优先级和结合方向n首先计算括号中的表达式(括号可嵌套,这时先计算里层括号中的表达式)。计算没有括号的表达式时,运算符依照优先级规则和结合方向进行运算。n如果相邻运算符的优先级相同,则结合方向(associativity)决定它们的执行顺序。l所有的双目运算符都是左结合的(left-associative)l赋值运算符是右结合的(right-associative)l例:由于+和-的优先级相同并且是左结合的,所以表达式 a-b+c-d 等价于 (a-b)+c)-dl例:赋值运算符是右结合的,所以表达式 a=b+=c=5 等价于 a=(b+=(c=5) 50实用精品课件PPT51举例n按照运
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河北省雄县2025年上半年公开招聘城市协管员试题含答案分析
- 河北省唐海县2025年上半年事业单位公开遴选试题含答案分析
- 河北省清苑县2025年上半年事业单位公开遴选试题含答案分析
- 河北省馆陶县2025年上半年公开招聘村务工作者试题含答案分析
- 2025年度生猪养殖场农业产业化龙头企业发展合作协议
- 2025年度农业土地承包与农产品品牌培育合同
- 2025年度事业单位因私出国专家聘请合同
- 2025年度农业项目抵押担保合同样本
- 2025年度工业产品设计合同保密条款
- 2025版文创产品社会化媒体营销推广合同
- 2025年湖南湘西自治州州直事业单位招聘考试笔试试卷附答案
- 幼儿园安全责任书及后勤管理制度
- 消防车辆事故课件
- 2026届四川省宜宾市普通高中高一化学第一学期期末统考试题含解析
- 《2型糖尿病中医防治指南(2024版)》解读课件
- 剑阁县普安镇污水处理厂扩容建设项目环评报告
- 商务楼宇管理办法
- 肺炎护理试题填空及答案
- 社用手机管理办法
- 心电监护操作常见并发症预防及处理
- 学校食堂各种检查记录表格表册11
评论
0/150
提交评论