《Java程序设计任务驱动式教程04章.ppt》由会员分享,可在线阅读,更多相关《Java程序设计任务驱动式教程04章.ppt(22页珍藏版)》请在金锄头文库上搜索。
1、主编:孙修东、王永红高职高专规划示范教材 北京航空航天大学出版社目录任务一 搭建环境(构建Java集成开发环境)任务二 Java欢迎你(开发简单Java应用程序任务三 小试牛刀(学习Java语言基础)任务四 挑战选择(使用分支控制流程)任务五 游戏人生(使用循环控制流程)任务六 回归自然(创建、使用类和对象)任务七 3G时代的消息传递(定义和使用类方法)任务八 保护你的隐私(封装的使用)任务九 子承父业(继承和多态的使用)任务十 上帝万能之手(接口的使用)2 22222任务十一 用数组存储信息(使用数组)任务十二 使用字符串进行交流(使用字符串)任务十三 防患于未然(捕获并处理异常)任务十四
2、主动出击(抛出异常)任务十五 认识Java Applet(Applet入门)任务十六 丰富多彩的Applet(在Applet中播放声音和显示图像)任务十七 进入Windows世界(设计图形用户界面)任务十八 布局规划(使用布局管理器)任务十九 事件委托处理(如何处理事件)任务二十 选择之道(使用选择控件和选择事件)目录3 32222任务二十一 简明清晰的菜单(使用菜单和其他常用事件)任务二十二 访问数据(使用JDBC连接数据库)任务二十三 访问数据升级(数据库编程)任务二十四 文件管理(目录与文件管理)任务二十五 顺序进出之道(文件的顺序访问)任务二十六 随机进出之道(文件的随机访问)任务二十
3、七 JAVA的分身术(创建和启动线程)任务二十八 线程的生命周期与优先级(线程的状态与调度)任务二十九 基于连接的通信(Java中的套接字Socket)任务三十 基于无连接的通信(Java中的数据报编程)目录4 42222任务四 挑战选择(使用分支控制流程) 21知识目标知识目标能力目标能力目标if条件结构;switch分支结构。 掌握分支流程控制结构:if条件结构和switch分支结构。 5 52222内容提要内容提要4跟我做:跟我做:计算运费计算运费 1235实现方案实现方案 代码分析代码分析 必备知识必备知识 动手做一做动手做一做 6 622224.1 跟我做:计算运费n任务情景任务情景
4、编制某运输公司计算运费的程序,请用if-else条件语句和switch分支语句分别实现。设:s是距离,单位为千米;w是重量,单位是吨;p是每吨每千米货物的基本运费,即运输单价;d是优惠金额的百分比;f是总运费。则该运输公司的收费标准为:s250km时,没有优惠;250kms500km,优惠2%;500kms1000km,优惠5%;1000kms2000km,优惠8%;2000kms3000km,优惠10%;3000kms,优惠15%。n运行结果第1章目录7 72222n问题分析问题分析从技术角度,该程序涉及常量和变量的定义和使用、变量间的算术运算、数据类型转换(包括字符串与基本数据类型的转换)
5、、基本的输入输出操作、if-else条件语句和switch分支语句的应用。n解决步骤解决步骤1.打开Eclipse,在study项目中创建包com.task04,再确定类名ComputePriceIf和ComputePriceSwitch,得到类的框架。package com.task04;public class ComputePriceIf public class ComputePriceSwitch2.定义所需要的变量。3.接收从键盘输入的数据,并将其转换成基本数据类型。第1章目录4.2 实现方案 8 822224.根据输入数据的值和该运输公司的收费标准,分别用if-else条件语句和
6、switch分支语句计算运费。(1)根据该运输公司的收费标准,可得到总运费f的计算公式:f=pws(1-d)(2)根据该运输公司的收费标准,可以看到,优惠的“变化点”都是250的倍数,若令c=s/250,则当c1时,表示s250,没有优惠;1c2时,表示250s500,优惠金额的百分比d=2%;2c4时,表示500s1000,优惠金额的百分比d=5%;4c8时,表示1000s2000,优惠金额的百分比d=8%;8c12时,表示2000s=3000)c=12;else c=s/250;if(c1)d=0;else if(c2)d=0.02; else if(c4)d=0.05; else if(
7、c8)d=0.08; else if(c=3000)c=12;else c=s/250;switch(c)case 0:d=0;break;case 1:d=0.02;break;case 2:case 3:d=0.05;break;case 4:case 5:case 6:case 7:d=0.08;break;case 8:case 9:case 10:case 11:d=0.1;break;case 12:d=0.15;break;default: d=0.15;break;f=p*w*s*(1-d);System.out.println(运输公司的运输单价为+p); System.ou
8、t.println(该次运输的货物重量为+w); System.out.println(该次运输的运输距离为+s); System.out.println(该次运输的总运费为+f); 第1章目录11112222n应用扩展应用扩展(1)上面的程序没有对用户输入的数据进行有效性的判断,如果用户输入负数,可以弹出警告信息或者将用户输入的非法数据进行统一的赋0等操作,这样可以使程序更加完善。参考代码如下:if(p0)System.out.println(“您输入的运费单价是负数,请输入大于0的数”);if(w0)System.out.println(“您输入的运输重量是负数,请输入大于0的数”);if
9、(s0)System.out.println(“您输入的运输距离是负数,请输入大于0的数”);(2)4.3中的代码使用的输入方式是用对话框方式实现的输入,对话框方式还可以实现输出。Java通过javax.swing.JoptionPane类可以方便地实现向用户发出输入或输出消息。JoptionPane类提供了几个主要的输入输出方法,如下:方法showConfirmDialog():用于询问一个确认问题,如yes/no/cancel。方法showInputDialog():用于提示要求某些输入。方法showMessageDialog():告知用户某事已发生。方法showOptionDialog(
10、):上述三项的大统一。还可以使用Scanner实现数据的输入,即使用java.util.scanner类创建一个对象,Scanner reader=new Scanner(System.in);借助reader对象可实现读入各种类型数据,读入方法为:nextInt():读入一个整型数据。nextFloat():读入一个单精度浮点数。nextLine():读入一个字符串。第1章目录4.3 代码分析 12122222参考代码如下:Scanner reader=new Scanner(System.in);s=reader.nextInt();除此之外,还可以使用命令行参数接收从键盘输入的数据。(3
11、)使用if-else条件语句实现的代码中,若if-else语句不是使用带缩进的书写格式,很难看出每个else和哪个if是一对,所以最好在每个if和else后使用一对花括号将其后的语句括起来,这样就很容易看出每个else和哪个if是一对了。参考代码如下:if(c1)d=0;else if(c2)d=0.02; else if(c4)d=0.05; else if(c8)d=0.08; else if(c=60)System.out.println(“pass”);elseSystem.out.println(“fail”);对于if.else.语句,与下面的写法等价:变量=布尔表达式?语句1:语
12、句2;例如下面的代码:if(x0)y=x;elsey=-x;与下面的语句等价:y=x0?x:-x;4.4 必备知识必备知识 17172222(3)if语句的多分支形式是:if (条件表达式1) 语句1;else if (条件表达式2) 语句2;else if(条件表达式n-1)语句n-1;else语句n;同基本形式的if结构一样,各语句可以是一条语句,或是用“”括起来的语句体。它的执行流程如图4-4所示。例4-3if条件语句的多分支形式示例public class IfManypublic static void main(String args )int today=5;if(today=
13、=0)System.out.println(“Today is Monday”);else if(today= =1)System.out.println(“Today is Tuesday”);else if(today= =2)System.out.println(“Today is Wednesday”);else if(today= =3)System.out.println(“Today is Thursday”);else if(today= =4)System.out.println(“Today is Friday”);else if(today= =5)System.out.
14、println(“Today is Saturday”);elseSystem.out.println(“Today is Sunday”);表达式1表达式2表达式n-1表达式n语句1语句2语句n-1语句nfalsefalsefalsetruetruetruetrue4.4 必备知识必备知识 18182222在使用if语句多分支形式时,最好使用来确定相互的层次关系,如下面的语句:if(x= =1)if(y= =1)System.out.println(“x=1,y=1”);elseSystem.out.println(“x=1,y!=1”);else if(x!=1)if(y= =1)Syst
15、em.out.println(“x!=1,y=1”);elseSystem.out.println(“x!=1,y!=1”);编译器是不能根据书写格式来判定层次关系的。我们需要人为地确定层次关系,即从后向前找else,else与离它最近的、且没有配对的if是一对。可见,我们很难判定最后的else语句到底属于哪一层,我们可以使用来加以明确。if(x= =1)if(y= =1)System.out.println(“x=1,y=1”);elseSystem.out.println(“x=1,y!=1”);else if(x!=1)if(y= =1)System.out.println(“x!=1,
16、y=1”);elseSystem.out.println(“x!=1,y!=1”);4.4 必备知识必备知识 191922222. switch条件结构必须在多个备选方案中处理多项选择时,用ifelse结构就显得很繁琐。这时可以使用switch语句来实现同样的功能。switch语句基于一个表达式条件来执行多个分支语句中的一个,它是一个不需要布尔求值的流程控制语句。switch 语句也称多分支的开关语句,它的一般格式定义如下:switch(表达式)case 常量值1:语句1;break;case 常量值2:语句2; break;case 常量值n:语句n;break;default:上面情况都不
17、符合情况下执行的语句;switch选择语句的表达式的值应为一个byte、short、int、char类型的数值。switch选择结构的常用目的就是为了从众多情况中选择所希望的一种去执行,故而,每一分支语句中都用break语句作为结束。如果忽略掉break语句,程序将继续测试并有可能执行下一分支,直到遇到break语句或当前switch语句体结束,这往往不是程序员所希望的。switch选择语句中可以有一个default语句作为其它情况都不匹配时的出口。4.4 必备知识必备知识 20202222例4-4switch语句示例public class MySwitchpublic static voi
18、d main(String args )int today=5;switch(today)case 1:System.out.println(“Today is Monday”);break;case 2:System.out.println(“Today is Tuesday”); break;case 3:System.out.println(“Today is Wednesday”); break;case 4:System.out.println(“Today is Thursday”); break;case 5:System.out.println(“Today is Friday
19、”); break;case 6:System.out.println(“Today is Saturday”); break;case 7:System.out.println(“Today is Sunday”); break;default:System.out.println(“please input 1-7”);4.4 必备知识必备知识 212122224.5 动手做一做动手做一做一、实训目的掌握使用Eclipse开发简单Java程序;掌握分支流程控制结构:if条件结构和switch分支结构。二、实训内容计算个人所得税。设某人月收入为x元,假设个人所得税征收方法如下:当800x13
20、00时,应征税为(x-800)*5%;当1300x2800时,应征税为(x-800)*10%;当2800x5800时,应征税为(x-800)*15%;当5800x28000时,应征税为(x-800)*20%;当28000x时,应征税为(x-800)*30%三、简要提示分析个人所得税征收方法,可以得到计算个人所得税的算法。令tax是应交所得税,y=x-800,将上面征收方法进行简化。选择使用if条件语句完成程序的编写,读者也可以尝试使用switch分支语句实现程序的编写。四、程序代码参见本教材教学资源。五、实训思考1.if条件语句的条件表达式的返回值是什么类型的?2.若使用switch分支语句来实现上面计算个人所得税程序的编写,case后面的常量都取什么值呢?3.按照现行的个人所得税征收方法,如何利用if语句和switch语句来实现计算个人所得税的程序呢?22222222