声明:本系列教程为本人目前编写的一部教材,请勿擅自转载。
如需使用请联系本人:lilizong【at】gmail.com
因图片较多,未将图片一一展示!
<!-- [if supportFields]><span lang=EN-US><span style='mso-element:field-end'></span></span><![endif]-->
教程 3 货物装载应用程序
教学目标
通过本教程的学习,将了解以下内容:
<!-- [if !supportLists]-->l <!-- [endif]-->变量和数据类型
<!-- [if !supportLists]-->l <!-- [endif]-->算数运算符
<!-- [if !supportLists]-->l <!-- [endif]-->注释的使用
3.1 程序概述
3.1.1 需求分析
某计算机制造公司要将 1080 台机箱运送到配货中心,已知每辆货车可以装载 100 台机箱,试计算需要多少辆货车?
3.1.2 运行演示
1 定位到源程序文件所在目录
选择“开始”→“附件”→“命令提示符”,打开命令提示符窗口。键入“ e: ”进入 E 盘,键入“ cd book\demo” 然后按下回车键 ( 如图 2.1 所示 ) ,将当前目录定位到应用源程序程序所在目录下。
<!-- [if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"> <v:stroke joinstyle="miter"/> <v:formulas> <v:f eqn="if lineDrawn pixelLineWidth 0"/> <v:f eqn="sum @0 1 0"/> <v:f eqn="sum 0 0 @1"/> <v:f eqn="prod @2 1 2"/> <v:f eqn="prod @3 21600 pixelWidth"/> <v:f eqn="prod @3 21600 pixelHeight"/> <v:f eqn="sum @0 0 1"/> <v:f eqn="prod @6 1 2"/> <v:f eqn="prod @7 21600 pixelWidth"/> <v:f eqn="sum @8 21600 0"/> <v:f eqn="prod @7 21600 pixelHeight"/> <v:f eqn="sum @10 21600 0"/> </v:formulas> <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/> <o:lock v:ext="edit" aspectratio="t"/> </v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" style='width:357.75pt; height:137.25pt'> <v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif" mce_src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif" o:title="01"/> </v:shape><![endif]--><!-- [if !vml]--><!-- [endif]-->
图 3.1 定位到文件所在目录
2 编译源程序
在当前命令提示符窗口下键入“ javac Box.java ”并按下回车键运行该程序,程序运行结果如图 2.2 所示。
<!-- [if gte vml 1]><v:shape id="_x0000_i1026" type="#_x0000_t75" style='width:369.75pt;height:161.25pt'> <v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image002.gif" mce_src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image002.gif" o:title="2"/> </v:shape><![endif]--><!-- [if !vml]--><!-- [endif]-->
图 3.2 编译源程序
3 运行程序
在当前命令提示符窗口下键入“ java Hello ”并按下回车键运行该程序,程序运行结果如图 2.3 所示。
<!-- [if gte vml 1]><v:shape id="_x0000_i1027" type="#_x0000_t75" style='width:399.75pt;height:137.25pt'> <v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image003.gif" mce_src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image003.gif" o:title="3"/> </v:shape><![endif]--><!-- [if !vml]--><!-- [endif]-->
图 3.3 程序运行结果
4 关闭运行程序
单击命令提示符右上角的关闭按钮,关闭正在运行的程序。
3.2 创建应用程序
3.2.1 变量
变量是 Java 程序的一个基本存储单元。变量由一个标识符,数据类型及一个可选初始值的组合定义。变量命名时,其第一个字母应该小写,在多个单词混合的情况下第一个单词后的所有单词的第一个字母大写,其余字母小写。变量名字因该紧凑而有意义。变量的名字应该是易记忆、易于理解的,即使间隔较长的时间也可以依其名而知其意。另外单字符的变量名应该尽量避免。
根据题目要求,完成如下代码:
1 public class Box1 {
2 public static void main(String args[])
3 {
4 int goodsNumber=1080;
5 int goodsOfOneTruck=100;
6 int TruckNumber=11;
7 System.out.print(" 计算机机箱台数为: ");
8 System.out.println(goodsNumber);
9 System.out.print(" 每辆货车可以装载的计算机机箱台数为: ");
10 System.out.println(goodsOfOneTruck);
11 System.out.println(" 需要的货车数目为: "+TruckNumber);
12 }
13 }
程序运行结果如图 3.4 所示。
<!-- [if gte vml 1]><v:shape id="_x0000_i1028" type="#_x0000_t75" style='width:369.75pt;height:149.25pt'> <v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image004.gif" mce_src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image004.gif" o:title="4"/> </v:shape><![endif]--><!-- [if !vml]--><!-- [endif]-->
图 3.4 运行结果
程序中第 4-6 行定义了 3 个整型变量他们的名字分别为: goodsNumber 、 goodsOfOneTruck 、 TruckNumber 。语句的含义分别是将等号右侧的值赋给当前变量。
“ int ”表示定义的数据类型是整型。 Java 语言的数据类型分为两类:基本数据类型和扩展数据类型。基本数据类型包括: boolean (布尔型)、 char( 字符型 ) 、 byte( 字节型 ) 、 short( 短整型 ) 、 int( 整型 ) 、 long( 长整型 ) 、 float( 单精度浮点型 ) 、 double( 双精度浮点型 ) 共 8 种,详见表 3-1 。所有基本数据类型的大小(所占用的字节数)都已明确规定好,在各种不同的平台上都保持一致,这一特性有助于提高 Java 程序的可移植性。扩展数据类型是建立在基本数据类型的基础上的。它包括数组、类和接口。复合数据类型是由用户自己定义的、用来限制其他数据的类型。
表 3-1 基本数据类型
类型 | 大小(字节) | 取值范围 |
boolean | 1 | false , true |
char | 2 | 整个 Unicode 字符集 |
byte | 1 | -128~127 |
short | 2 | -32768~32767 |
int | 4 | -2147483648~2147483647 |
long | 8 | -9223372036854775808~9223372036854775807 |
float | 4 | ± 3.04282347E+38 ~± 1.40239846E-45 |
double | 8 | ± 1.79769313486231570E+308 ~± 4.94065645841246544E-34 |
3.2.2 算数运算符
在 Box1.java 中实现了输出,但是没有实现具体的计算结果。如果需要计算结果就需要对已知条件进行算数运算。 Java 语言中,算数运算符主要有加( + )、减( - )、乘( * )、除( / )、取余( % )。
根据题目要求,运用除法运算符编写程序如下:
1 public class Box2 {
2 public static void main(String args[])
3 {
4 int goodsNumber=1080;
5 int goodsOfOneTruck=100;
6 int TruckNumber=goodsNumber/goodsOfOneTruck;
7 System.out.print(" 计算机机箱台数为: ");
8 System.out.println(goodsNumber);
9 System.out.print(" 每辆货车可以装载的计算机机箱台数为: ");
10 System.out.println(goodsOfOneTruck);
11 System.out.println(" 需要的货车数目为: "+TruckNumber);
12 }
13 }
运行该程序,运行结果如图 3.5 所示。
<!-- [if gte vml 1]><v:shape id="_x0000_i1029" type="#_x0000_t75" style='width:369.75pt;height:149.25pt'> <v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image005.gif" mce_src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image005.gif" o:title="5"/> </v:shape><![endif]--><!-- [if !vml]--><!-- [endif]-->
图 3.5 运行结果
从程序运行结果可以看到计算结果是错误的。这是因为对于加、减、乘、除四个运算,如果参与运算的是同一类型,那么结果仍为此类型。如果参与运算的是两个整数,而结果中出现浮点数,那么结果采用截尾方式处理。因此,上述例题中“ 1080/100 ”因为参与运算的都是整数,所以对得到的浮点数结果采用截尾处理故得到“ 10 ”。
需要注意的是,如果参与运算的数中有浮点数,则结果也将是浮点数。
因此需要对上述例题需要修改以便得出正确结果。通过分析得知,计算 goodsNumber/goodsOfOneTruck 时,只有当 goodsNumber 恰好等于 goodsOfOneTruck 的整数倍时,能得到正确的结果;否则,将得到错误的结果。通过分析得知,如果将上述算式处理为“( goodsNumber+ goodsOfOneTruck -1 ) /goodsOfOneTruck ”,即可得到正确结果。这种处理方式也是在网页制作中处理分页的常用方式。
修改过的程序如下:
1 public class Box3 {
2 public static void main(String args[])
3 {
4 int goodsNumber=1080;
5 int goodsOfOneTruck=100;
6 int TruckNumber=(goodsNumber+goodsOfOneTruck-1)/goodsOfOneTruck;
7 System.out.print(" 计算机机箱台数为: ");
8 System.out.println(goodsNumber);
9 System.out.print(" 每辆货车可以装载的计算机机箱台数为: ");
10 System.out.println(goodsOfOneTruck);
11 System.out.println(" 需要的货车数目为: "+TruckNumber);
12 }
13 }
程序运行结果如图 3.6 所示。
<!-- [if gte vml 1]><v:shape id="_x0000_i1030" type="#_x0000_t75" style='width:369.75pt;height:149.25pt'> <v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image006.gif" mce_src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image006.gif" o:title="6"/> </v:shape><![endif]--><!-- [if !vml]--><!-- [endif]-->
图 3.6 运行结果
3.2.3 常量
每辆货车可以装载的机箱数目为 100 台,这个是固定不变的,为了提高程序的安全性,可以将该数字定义为常量。 Java 语言中用 final 修饰的成员变量表示常量,值一旦给定就无法改变。为了提高程序的可读性,一般将常量名定义为大写形式。
下面的例题定义了一个常量 ONE 用来存储每辆货车可以装载的机箱数目。
1 public class Box4 {
2 public static void main(String args[])
3 {
4 final int ONE=100;
5 int goodsNumber=1080;
6 int TruckNumber=(goodsNumber+ONE-1)/ONE;
7 System.out.print(" 计算机机箱台数为: ");
8 System.out.println(goodsNumber);
9 System.out.print(" 每辆货车可以装载的计算机机箱台数为: ");
10 System.out.println(ONE);
11 System.out.println(" 需要的货车数目为: "+TruckNumber);
12 }
13 }
修改后的程序运行结果为:
<!-- [if gte vml 1]><v:shape id="_x0000_i1031" type="#_x0000_t75" style='width:369.75pt;height:149.25pt'> <v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image007.gif" mce_src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image007.gif" o:title="7"/> </v:shape><![endif]--><!-- [if !vml]--><!-- [endif]-->
图 3.7 运行结果
3.2.4 注释
在程序中添加必要的注释可以提高程序的可读性,方便以后的维护。 Java 里,可以使用三种注释的方法。分别是:
1 行注释
行注释也称单行注释。行注释使用的格式为:
// 注释文字
2 段落注释
段落注释也称多行注释,通常当说明文字比较长需要换行时使用段落注释方法。它的格式为:
/*
注释文字
*/
3 文档化注释
文档化注释也称为 Javadoc 注释。采用这种方法的注释,可以采用 javadoc 命令或工具抽取源文件里的 Javadoc 注释,生成组织有序的帮助文档( HTML 格式的文件)。 Javadoc 注释是一种多行注释,以 /** 开头,而以 */ 结束,注释可以包含一些 HTML 标记符和专门的关键词。使用 Javadoc 注释的好处是编写的注释可以被自动转为在线文档,省去了单独编写程序文档的麻烦。在注释中可以添加“ author ”、“ version ”等有关信息。
为了提高程序的可读性,对 Box4.java 进行修改如下:
1 /**
2 * designed by dont<br>
3 * 2009.1.19
4 * All rights reserved.
5 * @version 0.1
6 * @author dont
7 * @author superdont
8 */
9 public class Box5 {
10 public static void main(String args[])
11 {
12 // 首先定义 ONE ,用来存储每个货车的载货量
13 final int ONE=100;
14 /* 定义一个 int 型变量 goodsNumber ,用来存储
15 计算机机箱的总量 */
16 int goodsNumber=1080;
17 // 计算需要的货车数目
18 int TruckNumber=(goodsNumber+ONE-1)/ONE;
19 // 输出结果
20 System.out.print(" 计算机机箱台数为: ");
21 System.out.println(goodsNumber);
22 System.out.print(" 每辆货车可以装载的计算机机箱台数为: ");
23 System.out.println(ONE);
24 System.out.println(" 需要的货车数目为: "+TruckNumber);
25 }
26 }
在命令提示符内输入“ javadoc –version –author Box5.java ”并按回车键对注释文件进行编译,此时提示注释文档生成完毕,如图 3.7 所示。 Javadoc 参数中的“ version ”、“ author ”保证了生成的注释中含有版本和作者信息。
<!-- [if gte vml 1]><v:shape id="_x0000_i1032" type="#_x0000_t75" style='width:411.75pt;height:305.25pt'> <v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image008.gif" mce_src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image008.gif" o:title="7"/> </v:shape><![endif]--><!-- [if !vml]--><!-- [endif]-->
图 3.7 javadoc 命令的执行
在“ e:\book\demo ”下打开刚刚生成的注释文档 index.html ,如图 3.8 所示。
<!-- [if gte vml 1]><v:shape id="_x0000_i1033" type="#_x0000_t75" style='width:267.75pt;height:205.5pt'> <v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image009.png" mce_src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image009.png" o:title="8"/> </v:shape><![endif]--><!-- [if !vml]--><!-- [endif]-->
图 3.8 Box5 注释文档
编译执行 Box5.java 文件,执行结果如图 3.9 所示。从程序运行可以看出,程序注释并不会在运行结果中体现出来。
<!-- [if gte vml 1]><v:shape id="_x0000_i1034" type="#_x0000_t75" style='width:399.75pt;height:137.25pt'> <v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image011.gif" mce_src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image011.gif" o:title="9"/> </v:shape><![endif]--><!-- [if !vml]--><!-- [endif]-->
图 3.7 运行结果
3.3 小结
本教程首先介绍了变量及数据类型,并通过例题演示了数据类型的使用。然后介绍了算数运算符,并通过实例分析了算数运算符的使用及需要注意的问题。最后,介绍了 Java 语言中注释的使用。
<!-- google_ad_client = "pub-2869178750633362"; /* 728x90, 创建于 09-4-4 图片新的 */ google_ad_slot = "1633726934"; google_ad_width = 728; google_ad_height = 90; // -->