java小说人物分析报告

合集下载

小说人物形象分析

小说人物形象分析

小说人物形象分析人物形象是一部小说中至关重要的元素之一,能够给读者留下深刻的印象。

通过对小说中的人物形象进行分析,可以更好地理解作者的创作意图,深入挖掘其心理特征和行为动机。

本文将针对某部小说中的人物形象展开分析,并从外貌、性格、经历和行动等方面进行剖析。

一、人物A人物A是小说中的主角,他的外貌特征在整部小说中得到了详细描绘。

他长着一双深邃的眼睛,可能是因为小说中的经历,他的脸上总是带着一丝忧郁之色。

他瘦弱的身形和苍白的皮肤,传达出他内心的柔弱与无助。

从性格上来看,人物A是一个善良且坚强的人。

他勇敢地面对生活中的各种困难,从不退缩。

尽管他经历了许多挫折和痛苦,但他从未放弃对美好生活的向往。

他始终保持着对人性的信任,同时也展现出了他的智慧和机智。

人物A的经历是他形成这样性格的重要原因。

在小说中,他经历了家庭的破裂和亲人的离世,这些打击使他变得成熟而坚毅。

同时,他还经历了一系列的冒险和困境,这进一步锻炼了他的意志力和勇气。

他的经历是他性格成长的重要驱动力,也是他成为小说中的英雄的重要条件。

在小说中,人物A的行动具有很强的代表性。

他总是站在正义的一边,勇于捍卫弱者的权益,同时也愿意付出一切去实现自己的目标。

他的行动不仅帮助了他自己,也带动了其他人的改变,产生了深远的影响。

他的行动在小说中不断推动剧情的发展,将读者带入一个又一个精彩的故事情节。

总之,人物A在这部小说中形象鲜明,给读者留下了深刻的印象。

他的外貌、性格、经历和行动等方面的描写,使他成为一个栩栩如生的角色,让读者对他的命运和故事产生了强烈的关注。

二、人物B人物B在小说中扮演重要的配角,他的形象独具特色。

外表上,他有着一张精明而狡诈的脸庞,眼神中透露出一丝冷酷和阴谋。

他高大而威猛的身躯,让人产生一种敬畏和压迫感。

性格上,人物B是一个极端自私和狡猾的人。

他为达到自己的目的,不择手段,不顾他人的利益。

他往往隐藏着真正的意图,给人一种虚伪和欺骗的感觉。

小说的人物形象分析

小说的人物形象分析

小说的人物形象分析鉴赏人物形象,理解作者的思想倾向,是提高小说阅读鉴赏能力的关键。

那么,怎样鉴赏小说中的人物形象呢?大致来说,可从以下几方面入手:一、分析环境描写,探究形成人物性格的社会原因小说的环境描写分为社会环境描写与自然环境描写两种。

自然环境对人物命运有时会有影响,但决定人物命运的主要是社会环境。

分析环境描写,要注意两个要点:一是有些环境描写揭示了当时的社会特点,显露出主人公性格发展、命运变化的社会原因;二是通过环境描写,直接反映人物性格特点。

比如鲁迅小说《祝福》中对鲁四老爷书房的描写,特别是对那副对联的描写,把一个没落的封建卫道士的形象生动地展示在我们面前。

二、分析故事情节,把握人物性格特征故事情节一般是通过描写人物思想性格和情感欲望的冲突,以及由此引起的人物关系、人物命运的变化来展开的。

在情节的推进中,通过描写人物外貌、行为和心理状态,再现活生生的鲜明个性。

所以,鉴赏人物形象要从情节入手,据情节论人物。

比如《曹操献刀》中的曹操,是个既“雄”且“奸”的人物形象。

他的性格中,既有视死如归、意气风发的一面,又有多疑、狡诈、残忍、自私的另一面——这后一面在选段中也表现得淋漓尽致。

吕伯奢是曹父的结义兄弟,像父辈一样细心周到地款待匆匆而来的曹操与陈宫。

但曹操呢?他先是疑心重重,见伯奢“良久乃出”,已心存疑惑。

待见到伯奢言买酒“匆匆上驴而去”,疑心更重。

等听到磨刀之声,马上变了脸:“吕伯奢非吾至亲,此去可疑,当窃-听之”,“是矣!今若不先下手,必遭擒获”。

于是拔剑而入,杀死了吕伯奢的家人。

让人更觉残忍的是,他明知杀错了人,当再见盛意相邀的`吕伯奢时,竟连伯奢也杀了以绝后患。

当陈宫指责他不义时,他竟堂而皇之地说:“宁教我负天下人,休教天下人负我”。

其残忍、自私的形象凸显于读者脑海之中。

又如2017年新课标全国卷考查了莫泊桑的《保护人》,文后第(2)小题为:“小说中的玛兰是一个什么样的形象?请简要分析。

基于职业角色的小说人物形象分析

基于职业角色的小说人物形象分析

基于职业角色的小说人物形象分析职业角色在小说中扮演着重要的角色,他们的形象塑造不仅能够带动情节的发展,还能够为读者营造出丰富的世界观。

本文将从医生、警察、教师这三个职业角色入手,分析他们在小说中的形象塑造。

医生是一个常见的职业角色,在小说中经常扮演着救死扶伤的角色。

医生形象的塑造往往通过多种途径来展现,比如外貌、性格、技能等等。

医生的外貌通常需要给人一种专业、可信的感觉。

他们通常需要穿着白大褂,并且整洁干净;面容要和蔼可亲、睿智;眼神要坚定而又温柔。

这样的外貌给人一种安心、放心的感觉,使读者对他们产生信任。

医生的性格通常需要具备机智、善良、胆大等特点。

他们需要能够在紧急情况下冷静思考,做出正确的判断;需要具备爱心和同情心,关心病人的身体和心理健康;需要勇于面对困难和危险,敢于挑战各种医学难题。

这样的性格塑造使读者对他们产生敬佩和钦佩。

医生的技能通常需要具备高超的医学知识和技术。

他们需要了解各种病症的特点和治疗方法;需要熟练掌握各种医疗器械和技术操作;需要能够从病人的症状中准确判断出疾病的本质。

这样的技能展示使读者对他们的专业性产生信心。

警察是另一个常见的职业角色,在小说中经常扮演着维护社会治安的角色。

警察形象的塑造也是多方面展示的。

警察的外貌需要给人一种正义、威严的感觉。

他们通常需要穿着制服,戴着帽子;身材要魁梧,面容要刚毅;警察徽章和武器要齐全,这些外貌的展示给人一种安全感和信任感。

警察的性格通常需要具备勇敢、正直、聪明等特点。

他们需要能够在危险的环境下保持冷静和勇敢;需要具备正义感和责任感,始终坚持原则和法律;需要有良好的观察力和判断力,能够在犯罪现场找到线索并追踪犯人。

这样的性格塑造使读者对他们产生敬佩和依赖。

警察的技能通常需要具备丰富的法律知识和侦查能力。

他们需要熟悉各种法律法规,能够准确判断案件的性质和刑事责任;需要擅长侦查技巧和犯罪心理学,能够快速找到案件的突破口和嫌疑犯;需要勇于追逐和捕捉犯人,保护社会的安全。

小说中的人物性格分析

小说中的人物性格分析

小说中的人物性格分析在小说中,人物是构建故事情节和传递主题的核心元素之一。

人物形象的刻画不仅关乎作品的真实性和可信度,更深入揭示了人性的复杂性和多样性。

本文将通过对小说中的人物性格进行分析,探讨他们的内心世界、行为动机及与其他人物的互动关系。

一、人物一:李华李华是本小说的主角,他的性格特点主要体现在勇敢、坚韧和善良上。

在故事中,李华在面临困难和挑战时,总能毫不畏惧地面对,并竭尽全力去解决问题。

他不会被困境击垮,而是以乐观积极的心态应对。

例如,当他遇到困难时,他总是寻找解决问题的方法,从不轻易放弃。

他的善良使他关心他人,对待他人充满同情心和宽容。

他愿意帮助别人,并且总是尊重他人的感受。

二、人物二:王明与李华形成鲜明对比的是王明,他的性格特点主要表现在自私、阴险和狡猾上。

王明在故事中总是为了个人利益而不择手段,经常采取欺骗、背叛等手段来达到自己的目的。

他对他人的虚伪使他和其他人的关系破裂,他总是利用别人,从不考虑他人的感受。

尽管王明表面上似乎成功了,但他内心的空虚和孤独却让他无法得到真正的幸福。

三、人物三:张丽张丽是一个复杂的人物,她的性格特点主要表现在矛盾、优柔寡断和善变上。

她在故事中经常陷入冲突和困惑中,很难做出决定。

这种犹豫不决的性格使她在人际关系中处于被动地位,容易受到他人的操控。

尽管她内心明白自己想要什么,但她总是害怕失去,迟疑不决。

然而,在故事的发展中,张丽逐渐学会勇敢面对自己内心的真实想法,最终获得了内心的平安和自由。

四、人物四:杨剑杨剑的性格特点主要体现在正直、坚强和无私上。

他是小说中的一位英雄角色,不畏艰险,始终追随自己的理想和品德准则。

他对家人和朋友非常忠诚,甚至不惜付出自己的生命去保护他们。

他的无私和正直使他成为其他人群众敬仰的榜样,他的出现不仅推动了故事的发展,同时也为读者展现了一个崇高的人物形象。

通过对这些人物的性格分析,我们可以更加深入地理解他们的行为和动机。

小说中的人物形象生动鲜明,每个人物都有独特的性格特点,这些性格特点使他们与读者建立起情感联系,并引发读者对人性的思考。

java小说人物分析报告

java小说人物分析报告

一.实验题目自行下载自己最喜欢的小说1部。

存储为文本文档。

要求长篇小说,20万字以上。

任取其中10个人物,考虑他们的、别名等等一系列因素。

(1)统计每个人在小说中出现的次数并排序。

(2)统计每个人在小说中出现的篇幅跨度(第一次出现距最后一次出现的篇幅)并排序。

(3) 如果两人在相距较短的一段文字中出现,我们认为两人有关系,距离越短,关系越近。

自行设计统计标准,找出10个人中:1)关系最紧密的两个人,关系最不紧密的两个人。

2)输入一个人名,列出该人和其他人关系的紧密程度排名。

看与实际是否符合?如果不太符合,说明可能的原因。

二.需求分析本演示程序用 eclipse 编写,完成小说人物的出现次数统计,人物篇幅跨度统计以及人物间亲密程度的统计。

①统计人物出现次数:编写一个函数,当传入参数为人物名称时可统计该人物名在小说中的出现次数。

②人物篇幅跨度:编写一个函数,当传入参数为人物名称是可统计该人物名在小说中第一次出现的位置以及最后一次出现的位置,将最后一次出现位置减去第一次出现的位置比去小说通篇长度可得该人物名在小说中的人物篇幅跨度。

③人物间亲密程度:编写一个函数,当传入参数为人物名一和人物名二时,统计人物名一与人物名二同时在某个字数围出现的篇幅占人物名一的篇幅之比就是人物名一与人物名二的亲密程度。

④制作功能选择界面:界面包含有十个人物名的下拉列表,三个功能排序按钮,一个文本区域可输出统计结果。

三.概要设计1)为了实现上述程序功能,需要定义一下几个类:①Interface类:该程序的功能选择界面,包含main函数。

②Novelfunction1类:用来实现程序的第一个功能的类。

③Novelfunction2类:用来实现程序的第二个功能的类。

④Novelfunction3类:用来实现程序的第三个功能的类。

⑤Saver类:用来保存程序运行后的统计结果,结果将统计在result.txt中。

在程序运行中,在界面中的下拉列表选定一位人物,选定后在界面的文本区域中会输出该人物在小说中的出现次数,篇幅跨度以及与其他九个人物间的亲密程度;在界面中点击功能按钮“人物出现次数排序”,点击后文本区域会输出十个人物在小说中出现次数的升序排序;在界面中点击功能按钮“人物篇幅跨度排序”,点击后文本区域会输出十个人物在小说中篇幅跨度的升序排序;在界面中点击功能按钮“人物关系密度排序”,点击后文本区域中会输出十个人物间亲密程度最高的一组和亲密程度最低的一组结果。

java8大知名人物

java8大知名人物

你应该知道的8个Java 的领军人物2010-08-30 09:01 | 13021次阅读| 来源:Javaeye 【已有77条评论】发表评论关键词:Java,Java之父,Spring,Hibernate | 作者:ydj9931 | 收藏这篇资讯导读:本文介绍了8个Java的领军人物,他们创建了框架,产品,工具或者书籍,并将其捐献给了Java社区,改变了Java的编码方式。

8. Tomcat & Ant创始人James Duncan Davidson,Tomcat和Ant创始人。

Duncan于1970年7月29日生于美国德克萨斯州。

主要专注在Mac OS X、Java 和XML技术。

他频繁地在全世界各种会议上演讲,话题范围从开源到高效Java开发。

Duncan 是Apache Tomcat和Apache Ant的原创作者,1997-2001年曾在Sun Microsystems工作,参与促成了Sun Microsystems公司向Apache Software Foundation的捐赠。

在Sun工作期间,他创作了两个版本的Java Servlet API规范,以及Java API for XML Processing(Java版XML API)规范。

相关链接James Duncan Davidson TwitterJames Duncan Davidson WikiJames Duncan Davidson personal blogApache AntApache Tomcat7. Test Driven Development & JUnit创始人Kent Beck是XP(Extreme Programming)的创始人;同时还是极限(Extreme)编程,测试驱动开发的创造者;并与Erich Gamma一起创建了JUnit,也许就因为这个简单而又强大的工具,让众多的程序员更加认可和信赖极限编程,从而引起了Java敏捷开发的狂潮。

小说人物形象分析解读作者笔下人物

小说人物形象分析解读作者笔下人物

小说人物形象分析解读作者笔下人物在文学作品中,人物形象是作者情感、思想和观点的体现,也是表达故事情节的重要元素。

本文将通过分析与解读小说中的人物形象来探讨作者的创作意图和人物塑造技巧。

一、人物的外貌描写在小说中,作者通常会通过外貌描写来刻画人物形象。

这些描写细致入微,让读者能够直观地感受到人物的外貌特征,并且从中窥见其内心世界。

举例来说,小说中的主人公玛丽安,作者通过描写她飘逸的长发、明亮的眼睛和红润的唇色等细节,传达出她温柔、善良的性格。

这样的描写让读者更容易产生共鸣,对玛丽安的形象有更深刻的印象。

二、人物的性格特点除了外貌描写,人物的性格特点也是塑造人物形象的重要手段之一。

作者通常会通过人物言行举止、与他人的互动以及内心的独白来展现人物的性格特点。

例如,在小说中的角色约翰,他以机智聪明、果断冷静而闻名。

作者通过描述他在关键时刻的决断和行动,以及他与其他人的对话,展现了他聪明才智的一面。

这样的描写不仅突显了约翰的性格特点,同时也使得读者对他的人物形象有更清晰的认知。

三、人物的情感变化人物的情感变化是推动小说情节发展的重要因素之一,也是对人物形象进行深入解读的切入点。

通过分析人物情感的变化,读者可以更好地理解人物内心的斗争和成长过程。

举个例子,小说中的角色小杰,刚开始是一个胆小怯懦的少年。

但随着剧情的推进,他经历了各种挑战和困难,逐渐变得成熟勇敢。

通过描写他内心的恐惧和战胜恐惧的过程,读者可以深入了解他的性格变化与成长轨迹。

四、人物与环境的关系人物与环境的关系也是对人物形象进行分析的一个重要方面。

环境的变化可以引起人物的情感波动,从而进一步展现人物的性格和内心。

比如,在小说中,人物安娜生活在一个封闭的社区,她习惯了安逸的生活方式,没有经历过太多的风雨。

然而,当她被迫面对外界的困境时,她的性格逐渐变得坚毅和勇敢。

通过描写安娜与环境之间的交互作用,读者可以更好地理解她的成长与变化。

通过以上的分析与解读,我们可以看出,作者通过细致的描写、人物性格刻画、情感变化以及人物与环境的关系来塑造小说中的人物形象。

小说主要人物形象分析

小说主要人物形象分析

小说主要人物形象分析
在这部小说中,有几个主要人物的形象给读者留下了深刻的印象。

以下是对这些人物形象的分析:
1. 主角A
- 性格特点:主角A是一个坚强、聪明、勇敢的人物。

他(她)具有无畏的精神,永不放弃,始终追求自己的梦想。

- 外貌描写:主角A身材高大,面容英俊(或漂亮),眼神深邃。

- 行为举止:他(她)总是勇敢地面对困难,从不退缩。

他(她)的行动力很强,总是迅速做出决策并付诸行动。

2. 主角B
- 性格特点:主角B是一个善良、聪明、谦虚的人物。

他(她)具有过人的智慧和耐心,善于倾听他人的意见。

- 外貌描写:主角B身形矮小,但举止优雅。

他(她)的面容
平和,眼睛明亮有神。

- 行为举止:他(她)总是善良地对待他人,从不求功名利禄。

虽然主角B不是勇士,但他(她)总是以智谋来战胜困难。

3. 主角C
- 性格特点:主角C是一个狡猾、自私、心机深沉的人物。

他(她)总是以自己的利益为重,为了达到目的不择手段。

- 外貌描写:主角C的外貌普通,看起来没有什么特别之处。

但是他(她)的目光冷酷而锐利。

- 行为举止:主角C总是在背后暗中策划,设下陷阱来诱导其
他人。

他(她)不择手段地利用别人,为了达到自己的目的。

通过以上对主要人物形象的分析,读者能够更加深入地理解他
们的性格、外貌以及行为举止。

这些人物形象的鲜明对比,为整个
小说增添了丰富的情节,使故事更加生动有趣。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一.实验题目自行下载自己最喜欢的小说1部。

存储为文本文档。

要求长篇小说,20万字以上。

任取其中10个人物,考虑他们的姓名、别名等等一系列因素。

(1)统计每个人在小说中出现的次数并排序。

(2)统计每个人在小说中出现的篇幅跨度(第一次出现距最后一次出现的篇幅)并排序。

(3) 如果两人在相距较短的一段文字中出现,我们认为两人有关系,距离越短,关系越近。

自行设计统计标准,找出10个人中:1)关系最紧密的两个人,关系最不紧密的两个人。

2)输入一个人名,列出该人和其他人关系的紧密程度排名。

看与实际是否符合?如果不太符合,说明可能的原因。

二.需求分析本演示程序用 eclipse 编写,完成小说人物的出现次数统计,人物篇幅跨度统计以及人物间亲密程度的统计。

①统计人物出现次数:编写一个函数,当传入参数为人物名称时可统计该人物名在小说中的出现次数。

②人物篇幅跨度:编写一个函数,当传入参数为人物名称是可统计该人物名在小说中第一次出现的位置以及最后一次出现的位置,将最后一次出现位置减去第一次出现的位置比去小说通篇长度可得该人物名在小说中的人物篇幅跨度。

③人物间亲密程度:编写一个函数,当传入参数为人物名一和人物名二时,统计人物名一与人物名二同时在某个字数范围内出现的篇幅占人物名一的篇幅之比就是人物名一与人物名二的亲密程度。

④制作功能选择界面:界面包含有十个人物名的下拉列表,三个功能排序按钮,一个文本区域可输出统计结果。

三.概要设计1)为了实现上述程序功能,需要定义一下几个类:①Interface类:该程序的功能选择界面,包含main函数。

②Novelfunction1类:用来实现程序的第一个功能的类。

③Novelfunction2类:用来实现程序的第二个功能的类。

④Novelfunction3类:用来实现程序的第三个功能的类。

⑤Saver类:用来保存程序运行后的统计结果,结果将统计在result.txt中。

在程序运行中,在界面中的下拉列表选定一位人物,选定后在界面的文本区域中会输出该人物在小说中的出现次数,篇幅跨度以及与其他九个人物间的亲密程度;在界面中点击功能按钮“人物出现次数排序”,点击后文本区域会输出十个人物在小说中出现次数的升序排序;在界面中点击功能按钮“人物篇幅跨度排序”,点击后文本区域会输出十个人物在小说中篇幅跨度的升序排序;在界面中点击功能按钮“人物关系密度排序”,点击后文本区域中会输出十个人物间亲密程度最高的一组和亲密程度最低的一组结果。

四.源代码:①Interface:package novelproject;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JComboBox;import javax.swing.JLabel;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Font;import java.awt.GridLayout;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import javax.swing.JButton;import javax.swing.JTextArea;import java.io.BufferedReader;import java.io.FileOutputStream;import java.io.FileInputStream;import java.io.File;import java.io.FileReader;import java.io.PrintStream;import java.util.Arrays;import java.util.HashMap;public class Interface extends JFrame implementsItemListener,ActionListener{private JLabel jbl=new JLabel("嫌疑犯X的献身");private JLabel function=new JLabel("功能");private JPanel jpl=new JPanel();private BorderLayout bl=new BorderLayout(10,10);private JComboBox jcb=new JComboBox();private JButton jbt1=new JButton("出现次数排序");private JButton jbt2=new JButton("篇幅跨度排序");private JButton jbt3=new JButton("关系密度排序");private JTextArea jta=new JTextArea("以下是结果:\n",30,30);private static String personname=null;private static String[] arr1=new String[]{"汤川","草薙","岸谷","间宫","石神","靖子","美里","富坚","工藤","小代子"};private static int[] arr2=new int[10];private static HashMap<String,Integer> rls=newHashMap<String,Integer>();private Font font1=new Font("黑体",Font.BOLD,20);private Font font2=new Font("华文新魏",Font.BOLD,16);private Font font3=new Font("黑体",Font.BOLD,14);public JPanel createWEST1() {JPanel west1=new JPanel();west1.setLayout(new GridLayout(6,1,5,5));west1.add(jcb);jcb.addItem("请选择人物");jcb.addItem("汤川");jcb.addItem("草薙");jcb.addItem("岸谷");jcb.addItem("间宫");jcb.addItem("石神");jcb.addItem("靖子");jcb.addItem("美里");jcb.addItem("富坚");jcb.addItem("工藤");jcb.addItem("小代子");west1.add(function);west1.add(jbt1);west1.add(jbt2);west1.add(jbt3);return west1;}public JPanel createWEST2(){JPanel west2=new JPanel();west2.setLayout(new FlowLayout());west2.add(createWEST1());return west2;}public JPanel createNORTH(){JPanel north=new JPanel();north.setLayout(new FlowLayout(FlowLayout.CENTER));north.add(jbl);return north;}public JPanel createCENTER(){JPanel center=new JPanel();center.add(jta);return center;}public Interface() {this.add(jpl);jpl.setLayout(bl);jpl.add(createWEST2(),BorderLayout.WEST);jpl.add(createNORTH(),BorderLayout.NORTH);jpl.add(createCENTER(),BorderLayout.CENTER);jta.setFont(font1);jbt1.setFont(font2);jbt2.setFont(font2);jbt3.setFont(font2);jbl.setFont(font1);function.setFont(font1);this.setBackground(Color.yellow);jcb.addItemListener(this);jbt1.addActionListener(this);jbt2.addActionListener(this);jbt3.addActionListener(this);this.setSize(500,600);this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }public void itemStateChanged(ItemEvent e){if(e.getStateChange()==ItemEvent.SELECTED){switch((String)e.getItem()){case"汤川":personname="汤川"; break;case"草薙":personname="草薙"; break;case"岸谷":personname="岸谷"; break;case"间宫":personname="间宫"; break;case"石神":personname="石神"; break;case"靖子":personname="靖子"; break;case"美里":personname="美里"; break;case"富坚":personname="富坚"; break;case"工藤":personname="工藤"; break;case"小代子":personname="小代子"; break;}try {Saver.saver(personname);File file=new File("result.txt");FileReader fr=new FileReader(file);BufferedReader br=new BufferedReader(fr);jta.setText("以下是结果;\n");while(true){String msg=br.readLine();if(msg==null) {break;}jta.append(msg+"\n");}fr.close();br.close();} catch (Exception e1) {e1.printStackTrace();}}}public void actionPerformed(ActionEvent e){if(e.getSource()==jbt1){int i;HashMap<Integer,String> hm=new HashMap<Integer,String>();for(i=0;i<10;i++){try {byte[] data=NovelFunction1.getData();arr2[i]=NovelFunction1.stat(data,arr1[i]);hm.put(arr2[i],arr1[i]);}catch (Exception e1) {e1.printStackTrace();}}Arrays.sort(arr2);jta.setText("以下是结果:\n");for(int a:arr2){jta.append(hm.get(a)+" 的出现次数:"+a+"\n");}}else if(e.getSource()==jbt2){int i;float[] arr3=new float[10];HashMap<Float,String> hm=new HashMap<Float,String>();for(i=0;i<10;i++){try {arr3[i]=NovelFunction2.Span(arr1[i]);hm.put(arr3[i],arr1[i]);}catch (Exception e1) {e1.printStackTrace();}}Arrays.sort(arr3);jta.setText("以下是结果:\n");for(float a:arr3){jta.append(hm.get(a)+" 的篇幅跨度为:"+a+"%"+"\n");}}else if(e.getSource()==jbt3){jta.setText("以下是结果:\n");for(int i= 0;i<10;i++){try {rls=NovelFunction3.Relationship2(arr1[i]);for(String a:arr1){if(arr1[i]!=a){if(rls.get(a)==100){jta.append(arr1[i]+"与"+a+"最亲密为:"+rls.get(a)+"\n");}}}}catch (Exception e1) {e1.printStackTrace();}}for(int i= 0;i<10;i++){try {rls=NovelFunction3.Relationship2(arr1[i]);for(String a:arr1){if(arr1[i]!=a){if(rls.get(a)==0){jta.append(arr1[i]+"与"+a+"最不亲密为:"+rls.get(a)+"\n");}}}}catch (Exception e1) {e1.printStackTrace();}}}else{System.exit(0);}}public static void main(String[] args) throws Exception{ new Interface();}}②NovelFunction1:package novelproject;import java.io.File;import java.io.FileInputStream;public class NovelFunction1 {public static byte[] getData()throws Exception{ //读文件File novel=new File("嫌疑犯X的献身.txt");FileInputStream fis=new FileInputStream(novel);byte[] data=new byte[(int)novel.length()];fis.read(data);fis.close();return data;}public static int stat(byte[] data,String pn)throwsException{ //统计次数String dataStr=new String(data);int time=0;for(int i=0;i<dataStr.length()-pn.length()-1;i++){String s3 =dataStr.substring(i,i+pn.length()).toString();if(s3.equals(pn)){time++;}}return time;}}③NovelFunction2:package novelproject;import java.util.HashMap;public class NovelFunction2 {public static float Span(String pn)throws Exception{ byte[] data=NovelFunction1.getData();HashMap<String,Integer> hm1=new HashMap<String,Integer>();HashMap<String,Integer> hm2=new HashMap<String,Integer>();HashMap<String,Integer> hm3=new HashMap<String,Integer>();String dataStr=new String(data);int time=0;for(int i=0;i<dataStr.length()-pn.length()-1;i++){String s3 =dataStr.substring(i,i+pn.length()).toString();if(s3.equals(pn )){time++;if(time==1){hm1.put(pn,i);}hm2.put(pn, i);}}hm3.put(pn, (hm2.get(pn)-hm1.get(pn)));float span=((hm3.get(pn)*10000)/dataStr.length());return (span/100);}}④NovelFunction3:package novelproject;import java.util.HashMap;public class NovelFunction3 {private static float[] rs=new float[10];private static HashMap<String,Float> rls=newHashMap<String,Float>();private static String[] arr=new String[]{"汤川","草薙","岸谷","间宫","石神","靖子","美里","富坚","工藤","小代子"};public static float Relationship1(String pn1,String pn2)throws Exception{byte[] data=NovelFunction1.getData();String dataStr=new String(data);int time=NovelFunction1.stat(data,pn1);int score=0;int length1=0;int length2=1000;for(;(length2<dataStr.length());length1+=1000,length2+=1000){ for(int i=length1;i<length2-pn1.length()-1;i++){String s1=dataStr.substring(i,i+pn1.length()).toString();for(intj=length1;(s1.equals(pn1))&&(j<length2-pn2.length()-1);j++){Strings2=dataStr.substring(j,j+pn2.length()).toString();if(s2.equals(pn2)){score++; break;}}}}float rs=((score*10000)/time);return rs/100;}public static HashMap<String,Float> Relationship2(String pn)throws Exception{for(int i=0;i<10;i++){rs[i]=Relationship1(pn,arr[i]);rls.put(arr[i],rs[i]);}return rls;}}⑤Saver:package novelproject;import java.io.FileOutputStream;import java.io.PrintStream;import java.util.Arrays;import java.util.HashMap;import javax.swing.JOptionPane;public class Saver {public static String time=null;private static String sp=null;private static HashMap<String,Float> rls=newHashMap<String,Float>();private static String[] arr=new String[]{"汤川","草薙","岸谷","间宫","石神","靖子","美里","富坚","工藤","小代子"};public static void saver(String personname)throws Exception{try{byte[] data=NovelFunction1.getData();int ti=NovelFunction1.stat(data,personname);time=String.valueOf(ti);sp=String.valueOf(NovelFunction2.Span(personname));rls=NovelFunction3.Relationship2(personname);}catch(Exception ex){JOptionPane.showMessageDialog(null, "操作异常");}PrintStream ps=new PrintStream(newFileOutputStream("e:\\eclipse\\lny\\result.txt"));String msg1="人物:";ps.println(msg1+personname+"\n");String msg2="出现次数:";ps.println(msg2+time+"\n");String msg3="人物篇幅跨度为:";ps.println(msg3+sp+"%"+"\n");String msg4="人物关系密度:";ps.println(msg4);HashMap<Float,String> hm=new HashMap<Float,String>();float[] aa=new float[10];for(int i=0;i<10;i++){aa[i]=rls.get(arr[i]);hm.put(aa[i], arr[i]);}Arrays.sort(aa);for(float a:aa){if(personname!=hm.get(a)){ps.println(personname+"与"+hm.get(a)+"的关系密度为"+a);}}ps.close();}}五.测试结果程序运行时初界面:选择人物(1):选择人物(2):选择人物(3):选择人物(4):选择人物(5):选择人物(6):选择人物(7):选择人物(8):选择人物(9):选择人物(10):出现次数排序:篇幅跨度排序:关系亲密排序:。

相关文档
最新文档