1. 为定义一个XML文档的结构,开发者可以使用的XML技术有。(选择二项)(bd)
a) UML
b) DTD
c) Namespace
d) XML Schema
e) XSL
2. 下面是XML标准提供的编程接口,用于开发人员访问XML文档。(选择两项)(bd)
a) Xpath b) Dom
c) XSLT d) SAX
e) Xlink
3.下面是一个XML文档的序言部分:
]>
下面的片段中可以作为该XML文档的合法的文档元素部分的是。(选择一项)(B)
a)
b)
c)
d)
4. 在XML中,下列关于DOM的叙述是正确的。(选择三项)(ABC)
a) DOM是独立于开发语言和平台的,因此使用Visnal Basic、Java、Visual C++等开发工具使用的DOM编程API是一致的
b) XML文档通过load方法被装载进内存后,在内存中形成一个DOM文档对象模型树
c) 通过DOM API,软件开发人员可以控制XML文档的结构和内容
d)通过DOM在XML文档中只能按照顺序方式导航
5. 在XML中,一个Xpath表达式的返回值通常是。(选择一项)(a)(本题不严密,对信计专业不合适)
a) 节点集
b) 浮点值
c) 字符串
d) 布尔值
6.分析以下DTD文档:
下面的XML实例能够通过DTD的校验。(选择一项)(B)
a)
b)
c)
d)
7(*红色) .在XML中,在DOM创建一个元素节点的方法有。(选择两项)(ab)
a) createElement(“元素名”)
b) createNode(1,”元素名”,””)
c) createNode(2,”元素名”,””)
8. 在XML中,W3C组织给出的样式表语言的推荐标准有。(选择两项)(BD)
a) XPointer
b) XSL
c) XPath
d) CSS
e) XLinker
9. 在XML中,下面的DTD机制中最适合于模仿关系型数据库的主键与处键的关系。(选择一项)(a)
a) ID/IDREF
b) Key/keyref
c) CDATA
d) ENTITY
e) PCDATA
10(*红色) . 在XML中,下列关于Xpath的说法正确的有。(选择三项)(abc)
a) Xpath不是用XML书写的
b) 如果把XML文档实例当作数据库,那么Xpath就相当于SQL
c) Xpointer依赖于Xpath
d) Xpath可以定义XML文档间的链接关系
11. 在XML中,DOM中IXMLDOMNodeList的length属性表示的是。(选择一项)(c)
a) 该对象中文本字符的长度
b) 该对象中元素节点的数量
c) 该对象中节点的数量
d) 该对象中文档对象的数量
12. 在XML中,下述关于XSL的说法正确的有。(选择三项)(acd)
a) XSL是一种用来转换XML文档的样式表,它包含转换和格式XML文档的规则
b) XSL在转换XML文档过程中,首先根据匹配条件修改源文档内容,然后输出修改后的文档内容
c) XSL包含了XSLT和Xpath的强大功能,从而可以把XML文档转换成任何一种其它格式的文档
d) XSL文件是同一系列模板组成的,任何一个XSL文件至少包括一个模板
13(*红色) . 在XML中,对于XSL中的节点选择语句
a) 使用< xsl:value-of select=”匹配模式”>可以输出指定节点的取值
b) 使用空元素< xsl:value-of />可以输出当前节点及其所有后继节点的取值
c) 经过select属性限定的< xsl:value-of >元素的输出结点一定是唯一的节点
d) < xsl:value-of >元素不能作为循环< xsl:for-each >或者条件判断语句
14. 考虑如下的XML.Schema示例
属性currency声明等同于下面选项的DTD声明。(选择一项)(C)
a)
b)
c)
d)
15. 在XML中,在Schema中,声明一个元素的属性的attribute元素有一个常用的属性use,use的取值有。(选择三项)(bce)
a) empty
b) required
c) optional
d) fixed
e) prohibited
16. 对于XML文档实例片段
a)
height CDATA #REQUIRED
width CDATA #REQUIRED>
b)
height CDATA#REQUIRED
width CDATA#REQUIRED>
c)
height CDATA#REQUIRED
width CDATA# REQUIRED>
d)
height CDATA#REQUIRED
width CDATA# REQUIRED>
17. 下面的XML片断中结构完整的是。(选择一项)(D)
a)
b)
c) < customer type=extemal>
d)
18 下列说法错误的是。(选择一项)(b)
a) 在Schema中,通过对元素的定义和元素关系的定义来实现对整个文档性质和内容的定义的
b) Schema从字面意义上来说,可以翻译成架构,它的基本意思是为XML文档制定一种模式
c) Schema相对于DTD的明显好处是XML Schema文档本身也是XML文档,而不是像DTD一样使用自成一体的语法
d) IXMLDOMNode表示根节点,这是处理XML对象模型数据的基本接口,这个接口还包含了对数据类型、名称空间、DTD、schema的支持
19关于DOM的描述错误的是。(选择两项)(bd)
a) DOM使开发者能够以编程方式读取、操作和修改XML文档
b) 只能使用JavaScript进行DOM开发,而不能使用Java、C#
c) W3C组织公布了DOM模型的规范,然后各个软件厂商(比如微软)再根据W3C的规范开发DOM解析器,并且提供一系列的编程API,这些API都是遵守W3C规范的
d) DOM模型是W3C组织开发出来的一个在内存中表示XML数据的线性模型
20 以下正确的是。(选择三项)结构完整未必有效(答案为ACD)
a) DTD定义了XML文档中包含的标记、元素、元素类型以及属性
b) 一个结构完整的XML文档一定是合法的XML (*红色)
c) 命名空间能够区别不同来源的元素、属性的定义
d) 文档DTD可以包含在XML文档内,也可以在XML文档外定义
21(*红色) 假定元素为XML文档的根元素,这表明。(选择两项)(bc)
a)对于一个格式正规的XML文档,根元素必须是预定义的标记
b) 根元素下的子元素可以自定义
c)对于一个合法的XML文档,根元素必须是预定义的标记
22下列说法错误的是。(选择一项)(b)
a) XSL在转换XML文档时分为明显的两个过程:首先转换文档结构,然后将文档格式化输出
b) XSLT包含XSL和XPath的强大功能,从而可以把XML文档转换成任何一种其它格式的文档
c) 如果将XML文档看成DOS目录结构,XPath就是cd、dir等目录操作命令的集合
d) 如果将XML文档看作一个数据库,XPath就是SQL查询语言
23(*红色) 在DOM中捕获XML文档中的错误可以用的IXMLDOMParseError属性有。(选择四项) (abde)
A line
B linepos
C xml
D srcText
E reason
25(*红色) 下述关于CSS样式表的说法正确的有。(选三项)(abd)
a) 在XML文档中引用一个CSS样式的语法为:样式表文件路径”?>
b) CSS可将XML文档结构调整后转换为HTML在浏览器上显示
c) CSS最初是针对HTML而提出的样式表,现在同样可以很好地应用于描述XML文档显示
d) CSS在显示一个XML文档的过程中没有任何新代码产生
26. XML中,()是文档对象模型DOM中的基本对象,元素、属性、注释、处理指令等都可以认为是它。(选择一项)(b)
A DOMDocument
B IXMLDOMNode
C IXMLDOMNodeList
D IXMLDOMElement
E IXMLDOMDocumentType
28) 分析以下在DTD文档:
下面的XML实例()能够通过DTD的校验。(选择二项)答案为BC
a)
b)
c)
d)
29) .一个学生成绩表的数据(含有Java/VB/VC++/SQL Server/Oracel各门课程的成绩),分别按成绩小于60输出不及格、成绩在60到80分之间输出合格、成绩在80分以上的输出优秀。下列XSL语句能够很好地完成此需求。(选择一项)(c)
A
B
C
D
30) 常用的文档模型分为()。(选择三项)答案为ACE
a) 线性模型
b) 对象模型
c) 层次模型
d) 环球模型
e) 树型模型
31)定义一个名称为“月份”的数据类型的Schema片段为。(选择一项)(c)
a)
b)
c)
d)
32) 下列是XML相对于HTML的主要优点。(选择三项)(abc )
a) 分离数据和表示
b) 可扩展性
c) 文档包含语义
d) 标记是固定的
e) 得到Microsoft 、SUN、 ORACLE等大量软件厂商的支持
33) 阅读下面XML文档,然后判断下列说法正确的是。(选择一项)(c)
a)
b)
c) tom是文本对象
d) tom是元素对象
34) 下面说法错误的是()。(选择两项) 答案为BC
A 格式正规的XML文档不一定是有效XML文档
B 有效XML文档不一定是格式正规的XML文档
C 格式正规的XML文档一定是有效XML文档
D有效XML文档一定是格式正规的XML文档
35)
XML中,关于CSS和XSL,下面论述不正确的是。(选择一项)(b)
A CSS样式表可以用于“装饰”XML文档和HTML文档
B XSL样式表可以用来“装饰”XML文档和RTF文档
C 不像CSS,XSL可以用来执行XML转换
D 在XSL允许使用类似CSS方式格式化XML文档
36) Schema与DTD的相同之处有。(选择一项)(d )
a) 基于XML语法
b) 支持命名空间
c) 可扩展
d) 对XML文档结构进行验证
37) 对于如下的XML文档实例(people.xml);
引用如下的XSL文件:
在浏览器中的输出结果为。(选择一项)(c)
a) 无任何输出
b) E01 Tony Beijing Bill USA
c) Tony Beijing Bill USA
d)
38) 下面是XML提供的编程接口,用于开发人员访问XML文档。(选择一项)(b)
a) XPath
b) DOM
c) XSL
d) DTD
39) 如果一个XML 文档存在以下情况,我们称它为无效的xml文档。(选择两项)(CD)
a) 没有遵守 XML 规范定义的语法规则。
b) 遵守 XML语法,但没有 定义DTD 或Schema。
c) 定义了DTD 或Schema,但没有遵守DTD 或Schema中定义的规则。
d) 定义的DTD 或Schema不符合语法规范。
40)
Hello, World!
上面的XML文档属于文档。(选择一项)(C)
a) 无效的
b) 有效的
c) 格式良好的
d) 格式错误的
41 以下的xml文档片段中,属性符合XML语法规则的是(AB)。(选择两项)
a)
b)
c)
d)
42
]>
&location;
关于上述Xml文档,以下描述正确的是(B)。(选择一项)
a) 该Xml文档中使用了外部DTD。
b) 通过浏览器打开上述Xml文档时,字符串jianwai street代替了& location;
c) 该Xml文档不是有效的XML文档。
d) 该Xml文档中的location为参数实体。
43
xmlns:addr=http://www.xyz.com/addresses/ xmlns:books=http://www.zyx.com/books/ > 上述是一段关于XML命名空间的实例片段,以下说法错误的是。(选择一项)(C) a) 本例中,命名空间的前缀分别是 addr、books b) 第一个 c) 名称空间中定义的字符串必须是可以访问的URL,比如:XML 解析器会到 [url]http://www.zyx.com/books/[/url] 去搜索 DTD 或schema 44 给定一段 DTD片段(保存于d:\dtds\root.dtd): 假定 XML 文档中已有如下声明: 。 下面()段XML 文档片段能够针对给定的DTD内容成功通过验证。(选择两项)AC a) b) c) d) 45以下关于xslt说法不正确的是(C)。(选择一项) a) Xslt是xsl的一部分,有独立的命名空间。 b) Xslt可以把xml文档转换为xhtml。 c) 要执行xslt转换,只需要xml文档,xslt样式表和浏览器就可以了。 d) Xslt使用xpath对xml文档进行导航。 46 Report.xml中包含subject 元素,该元素可以包含某 HTML 标记,如下: 2008年 北京奥运会展望 现需要编写一个XML schema来定义该xml文档内容的结构,以下的schema片断中,()可以使Report.xml通过有效性验证。(选择两项)AC a) type="xsd:string" /> type="xsd:string" /> b) c) d) type="xsd:string" /> type="xsd:string" /> 47(B)属性指定元素最多出现的次数。(选择一项) a) minOccurs b) maxOccurs c) minExclusive d) maxExclusive 48 某新闻网站新闻量较大,并且新闻需要被即时发布。该网站可以通过各种浏览器和手持设备访问。网站后台是一个基于xml的应用系统,该系统把数据库中数据读取到xml文档中,并使用DOM进行解析。使用以下(B)方法可以提高后台应用系统的性能,从而提高该网站的性能。(选择一项) a) 把xml文档转化成html网页。 b) 使用SAX解析xml文档。 c) 不经解析,把xml文档直接发送给浏览器。 d) 使用样式表对xml文档进行转换。 49 某公司决定使用xml文档和客户进行数据交换,当设计XML文档结构时,以下的因素中,需要设计人员考虑的是(AD)。(选择两项) a) 每次传递数据的大小。 b) 发送xml文档需要采用的协议。 c) 解析xml文档的解析器。 d) 是否需要处理二进制数据。 50 要定义一个数据类型,既可能包含integer类型的值,也可能包含string类型的值,以下schema片段正确的是(A)。(选择一项) a) c) d) 51 已知xslt片段: a) True b) False c) 不存在roundOff函数。 d) 以上都不是。 52 已知xml文档包含如下内容(list为根元素): 使用xslt进行转换时,语句 a) 3 b) 2 c) 1 d) 0 53 可扩展样式表语言(XSL)用来定义 XML 文档的显示语义,XSL 包括三个部分,除了(D)。(选择一项) a) XSLT b) XPath c) XSL-FO d) CSS 简答题答案 1、什么是XML?(定义) 答:XML(Extensible Markup Language,可扩展的标记语言)是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识。它也是元标记语言,可以定义其他与特定领域有关的、语义的、结构化的标记。 2、答:相对于其他应用于EDI的结构化信息技术而言,XML的优势如下: l 低成本,XML不需要VAN的高额费用,中小企业也用得起。 l 定制商业规则,XML允许用户创建自己的商业规则和格式。 l 容易解释,EDI需要翻译软件来得到贸易伙伴的信息格式,而XML通过免费下载的解析器可以很容易解释XML文档,实现这一需求。 l 平台独立,不管是什么平台,都能进行交易。 3、 答:XML的优点表现在以下各方面。(10点) (1)更有意义的搜索。 数据可通过XML进行唯一的标识。没有XML,搜索软件必须了解每个数据库是如何构建的。这实际上是不可能的,因为每个数据库描述数据的方法都是不同的。有了XML,情况就完全不同了。例如,学生信息可以按照学号、姓名或其他的标准分类。这样搜索就变得十分方便。 (2)开发灵活的Web应用软件。 数据一旦建立,XML能被发送到其他应用软件、对象或者中间层服务器做进一步地处理。它也可以被发送到桌面用浏览器浏览。XML和HTML、脚本、公共对象模式一起为灵活的三层Web应用软件的开发提供了所需的技术。 (3)不同来源数据的集成。 现在搜索多样的不兼容的数据库实际上是不可能的。XML能够使不同来源的、结构化的数据很容易地结合在一起。软件代理商可以在中间层服务器上对从后端数据库和其他应用处发来的数据进行集成。然后,数据就能被发送到客户或其他服务器上做进一步的集成、处理和分发。 (4)多种应用得到的数据。 XML的扩展性和灵活性允许它描述不同种类应用软件中的数据,从搜索到的Web页到数据记录。同时,由于基于XML的数据是自我描述的,数据不需要有内部描述就能被交换和处理。 (5)本地计算和处理。 XML格式的数据发送给客户后,客户可以用应用软件解析数据并对数据进行编辑和处理。使用者可以用不同的方法处理数据,而不仅仅是显示它。XML文档对象模式(DOM)允许用脚本或其他编程语言处理数据。数据计算不需要回到服务器就能进行。分离使用者查看数据的界面,使用简单、灵活、开放的格式,可以给Web创建功能强大的应用软件,这些软件原来只能建立在高端数据库上。 (6)数据的多样显示。 数据发到桌面后,能够用多种方式显示。通过以简单、开放、扩展的方式描述结果化的数据,XML补充了HTML,被广泛地用来描述使用者界面。HTML描述数据的外观,而XML描述数据本身。由于数据显示与内容分开,XML定义的数据允许指定不同的显示方式,使数据更合理地表现出来。本地的数据能够以客户配置、使用者选择或标准规定的其他方式动态地表现出来。CSS和XSL为数据的显示提供了统一且标准的机制。 (7)粒状的更新。 通过XML,数据可以进行粒状的更新。每当一部分数据变化后,不需要重发整个结构化的数据。变化的元素必须从服务器发送给客户,但变化的数据不需要刷新整个使用者的界面就能够显示出来。 (8)在Web上发布数据。 由于XML是一个开放的、基于文本的格式。它可以和HTML一样使用HTTP进行传送,不需要对现存的网络进行改变。 (9)升级性。 由于XML彻底把标识的概念同显示分开,处理者能够在结构化的数据中嵌套程序化的描述,以表明如何显示数据。这是令人难以相信的、强大的机制,它使得客户计算机同使用者间的交互尽可能地减少了,同时减少了服务器的数据交换量和浏览器的响应时间。另外,XML使个人的数据只能通过更新的布告发生变化,减少了服务器的工作量,大大增强了服务器的升级性能。 (10)压缩性。 XML的压缩性能很好,因为用于描述数据结构的标签可以重复使用。XML数据是否压缩不仅要根据应用来定,还取决于服务器与客户间数据的传送量。 1、答: 规则1:必须有XML声明语句; 规则2:注意大小写; 规则3:所有的XML文档必须有且只有一个根元素; 规则4:属性值必须使用引号""; 规则5:所有的标识必须有相应的结束标识; 规则6:所有的空标识也必须被关闭; 规则7:标识必须正确嵌套; 规则8:处理空白字符; 规则9:处理特殊字符。 2、答:在XML中,基本上没有什么保留字,所以我们可以随心所欲的用任何词语来作为元素名称,但是XML元素的命名必须遵守下列规范: 1、元素的名字可以包含子母,数字和其他字符。 2、元素的名字不能以数字或者标点符号开头。 3、元素的名字不能以XML(或者xml,Xml,xMl...)开头。 4、元素的名字不能包含空格。 5、尽量避免使用“-”,“.”,因为有可能引起混乱。 6、元素的命名应该遵循简单易读的原则,例如: 7、XML文档往往都对应着数据表,我们应该尽量让数据库中的字段的命名和相应的XML文档中的元素的命名保持一致,这样可以方便数据变换。 8、非英文/字符/字符串也可以作为XML元素的名字,例如<歌曲>、<文章>等,这都是完全合法的名字。但是有一些软件不能很好的支持这种命名,所以我们最好尽量使用英文字母来进行命名。 9、在XML元素命名中不要使用":",因为XML命名空间需要用到这个十分特殊的字符。 1、 答:SELECT 语句的 FOR XML子句支持4种 XML 转换模式, 分别是RAW、AUTO、EXPLICIT 或 PATH模式。 2、 答:可以通过使用系统存储过程sp_xml_preparedocument的OPENXML函数把XML文档中的数据插入数据库。 其中系统存储过程sp_xml_preparedocument用来创建一个能被插入数据库的XML文档的内部表示,该存储过程返回一个可以访问XML文档的内部表示的句柄,另一方面,系统存储过程sp_xml_removedocument可以用来删除XML文档的内部表示。 1、答:最常见的节点类型有: (1)、元素:元素是 XML 的基本构件。元素可以有其它元素、文本节点或两者兼有来作为其子节点。元素节点还是可以有属性的唯一类型的节点。 (2)、属性:属性节点包含关于元素节点的信息,但实际上,不认为它是元素的子节点 (3)、文本:文本节点是:文本。它可以包含许多信息或仅仅是空白。 (4)、文档(根节点):文档节点是整个文档中所有其它节点的父节点。 2、答: 使用XML DOM,可以让我们遍历、读取和操纵XML文档的结构和内容,其主要对象和方法有: (1)、DOMDocument对象:描述全部文档映射表,它包括文档所有信息。对开发人员来说,最重要的编程对象是DOMDocument。 DOMDocument对象通过暴露的属性和方法来允许浏览、查询和修改XML文档的内容和结构 (2)、IXMLDOMNode对象:描述文档里的节点,此节点可以是元素、属性、处理指令、文本或其他存储在XML文档里的信息。 (3)、IXMLDOMNodeList对象:描述节点对象的集合,可以使用该对象遍历这个集合,可以用数值访问。 (4)、IXMLDOMParseError对象:用来验证XML文档对于DTD、XSD的正确性。 一、问答题(30分)。---------------算法设计 1.什么是最坏情况时间复杂性?什么是平均情况时间复杂性? 2.什么是递归算法?什么是递归函数? 3.递归函数的二要素是什么? 4.分治法的设计思想是什么? 5.什么叫问题的最优子结构性质? 6.动态规划基本步骤是什么? 7.动态规划算法的基本要素是什么?举例说明一些可以用动态规划算法解决的问题。 8.说明分治法与动态规划法的相同点和不同之处? 9.贪心算法的两个重要要素是什么?举例说明一些可以用贪心算法解决的问题。 10.什么叫贪心选择性质? 11.贪心算法与动态规划算法的的相同点和不同之处? 12.背包问题与0-1背包问题有何区别? 13.回溯法与分支限界法之间的相同点是什么?不同之处在哪些方面? 14.分支限界法基本思想是什么? 15.常用的剪枝函数有哪两类? 16.约束函数的功能是什么? 17.限界函数的功能是什么? 18..常见的两种分支限界法是什么? 19.什么是P问题和NP问题? 20.回溯法中剪枝函数有哪几类?各有何用途? 21.什么是P问题和NP问题? 22.什么是NP完全问题? 23.什么是NP问题? 24.NP-Hard问题? 一.100以内全部素数 public class Prime { public static void main(String[] args) { {int i,j; for(j=2;j<=100;j++) {for(i=2;i<=j/2;i++) {if(j%i==0) break; } if(i>j/2) {System.out.println(""+j+"是素数");}}}}} 二.8+88+888+··· (1)for循环 public class Sum { public static void main(String[] args) { long sum=0,a=8,item=a,n=10,i=1; for(i=1;i<=n;i++) {sum=sum+item; item=item*10+a; } System.out.println(sum);}} (2)whlie循环 public class Sum1 { public static void main(String[] args) { long sum=0,a=8,item=a,n=10,i=1; while(i<=n) {sum=sum+item; item=item*10+a; i++; } System.out.println(sum);}} 三:完数 public class Complete { public static void main(String args[] ) { int sum=0,i,j; for(i=1;i<=1000;i++) {for(j=1,sum=0;j<=i/2;j++) {if(i%j==0) sum=sum+j; } if(sum==i) System.out.println("完数:"+i);} } } 四:P102 T16----英文字母表,希腊字母表 public class A { public A(){} public void f() { String t = "英文字母表: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z"; System.out.println(t); } public static void main(String[] args) { A a = new A(); B b = new B(); System.out.println("a类的f方法 = "); a.f(); System.out.println("b类的g方法 = "); b.g(); } } class B extends A { public B() {} public void g() { f(); String t = "希腊字母表: α β γ δ εζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χψ ω "; System.out.println(t); } } 五:字符串种类及个数 import java.util.*; public class CountChars { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入字符串!"); String str = sc.nextLine(); Map System.out.println("字符的种类: " + map.size()); for (Map.Entry { System.out.printf("字符 %c: %d\n", entry.getKey(), entry.getValue()); } } static Map { if (s == null) { return null; } Map char c; Integer oldValue; int newValue; for (int i = 0; i < s.length(); ++i) { c = s.charAt(i); oldValue = map.get(c); newValue = (oldValue == null) ? 1 : oldValue.intValue() + 1; map.put(c, newValue); } return map; } } 六:P126 T3 import java.util.*; public class TestCalendar { public static void main(String args[]) { Calendar calendar=Calendar.getInstance(); calendar.setTime(new Date()); String 年=String.valueOf(calendar.get(Calendar.YEAR)), 月=String.valueOf(calendar.get(Calendar.MONTH)+1), 日=String.valueOf(calendar.get(Calendar.DAY_OF_MONTH)), 星期=String.valueOf(calendar.get(Calendar.DAY_OF_WEEK)-1); int hour=calendar.get(Calendar.HOUR_OF_DAY), minute=calendar.get(Calendar.MINUTE), second=calendar.get(Calendar.SECOND); System.out.println("现在的时间是:"); System.out.println(""+年+"年"+月+"月"+日+"日"+ "星期"+星期); System.out.println(""+hour+"时"+minute+"分"+second+"秒"); calendar.set(1962,5,29); long time1962=calendar.getTimeInMillis(); calendar.set(2006,9,1); long time2006=calendar.getTimeInMillis(); long 相隔天数=(time2006-time1962)/(1000*60*60*24); System.out.println("2006年10月1日和1962年6月29日相隔"+相隔天数+"天"); } } 七:求数字串之和或反向输出 import java.awt.*; import java.awt.event.*; import java.util.regex.Matcher; import java.util.regex.Pattern; public class zy4{ public static void main(String args[]) {HisWindow win=new HisWindow();} } class HisWindow extends Frame implements ActionListener { TextField t1,t2;Label label; Button b1,b2; HisWindow() { setLayout(new FlowLayout()); t1=new TextField(20); t2=new TextField(20); b1=new Button("确定"); label=new Label("请输入一字符串或数字序列:"); add(label);add(t1);add(b1);add(t2); b1.addActionListener(this); setBounds(300,300,500,500); setVisible(true); validate(); } public boolean isNumeric(StringBuffer str) { Pattern pattern = Pattern.compile("[0-9]*"); Matcher isNum = pattern.matcher(str); if( !isNum.matches() ) { return false; } return true; } public void actionPerformed(ActionEvent e) {// TODO 自动生成方法存根if(e.getSource()==b1) { StringBuffer str=new StringBuffer(t1.getText()); if(!isNumeric(str)) {str=str.reverse(); t2.setText(null); t2.setText(str.toString()); } else { int result = 0; for( int i=0;i { int a = Integer.parseInt(str.charAt(i)+""); result+=a; } String total=String.valueOf(result); t2.setText(null); t2.setText(total.toString()); } } } } 九 P262 T13 public class Study { public static void main(String[] args) { A a=new A(); a.student1.start(); a.student2.start(); a.teacher.start(); } } class A implements Runnable { Thread student1,student2,teacher; A() {teacher=new Thread(this); student1=new Thread(this); student2=new Thread(this); teacher.setName("王教授"); student1.setName("张三"); student2.setName("李四"); } public void run() {if(Thread.currentThread()==student1) {try{ System.out.println(student1.getName()+"正在睡觉, 不听课"); Thread.sleep(1000*60*10); } catch (InterruptedException e) {System.out.println(student1.getName()+"被老师叫醒了"); student2.interrupt(); } System.out.println(student1.getName()+"开始听课"); } else if(Thread.currentThread()==student2) {try{ System.out.println(student2.getName()+"正在睡觉,不听课"); Thread.sleep(1000*60*60); } catch (InterruptedException e) { System.out.println(student2.getName()+"被张三叫醒了"); } System.out.println(student2.getName()+"开始听课"); } else if(Thread.currentThread()==teacher) {for(int i=1;i<=3;i++) {System.out.println("上课!"); try{ Thread.sleep(500); } catch(InterruptedException e){} } student1.interrupt(); }}} 十 P262 T12 import java.awt.*; import java.awt.event.*; public class BuyTicket { public static void main(String[] args) { new MyFrame(); } } class MyFrame extends Frame implements Runnable,ActionListener { ShouPiaoYuan 王小姐; Thread 张某,李某,赵某; static TextArea text; Button start =new Button("排队买票"); MyFrame() { 王小姐=new ShouPiaoYuan(); 张某=new Thread(this); 李某=new Thread(this); 赵某=new Thread(this); text=new TextArea(10,30); start.addActionListener(this); add(text,BorderLayout.CENTER); add(start,BorderLayout.NORTH); setVisible(true); setSize(360,300); validate(); addWindowListener(new WindowAdapter()) { public void windowClosing(WindowEvent e) { System.exit(0); } }; } public void actionPerformed(ActionEvent e) { try{ 张某.start(); 李某.start(); 赵某.start(); } catch(Exception exp){} } public void run() { if(Thread.currentThread()==张某) { 王小姐.售票规则(20); } else if(Thread.currentThread()==李某) { 王小姐.售票规则(10); } else if(Thread.currentThread()==赵某) { 王小姐.售票规则(5); } } } class ShouPiaoYuan { int 五元钱的个数=3,十元钱的个数=0,二十元钱的个数=0; String s=null; public synchronized void 售票规则(int money) { if(money==5) { 五元钱的个数=五元钱的个数+1; s="给您的入场券您的钱正好"; MyFrame.text.append("\n"+s); } else if(money==10) { while(五元钱的个数<1){ try{wait();} catch(InterruptedException e){} } 五元钱的个数=五元钱的个数-1; 十元钱的个数=十元钱的个数+1; s="给您的入场券"+" 您给我10元, 找您5元"; MyFrame.text.append("\n"+s); } else if(money==20) { while((五元钱的个数<1&&十元钱的个数<1)||(五元钱的个数<3)){ try{wait();} catch(InterruptedException e){} } if(五元钱的个数>=3) { 五元钱的个数=五元钱的个数-3; 二十元钱的个数=二十元钱的个数+1; } else { 十元钱的个数=十元钱的个数-1; 五元钱的个数=五元钱的个数-1; 二十元钱的个数=二十元钱的个数+1; } s="给您的入场券"+" 您给我20元, 找您15元"; MyFrame.text.append("\n"+s); } } }
b)