ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:891.38KB ,
资源ID:23460592      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23460592.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(java小说人物分析.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

java小说人物分析.docx

1、java小说人物分析一实验题目 自行下载自己最喜欢的小说1部。存储为文本文档。要求长篇小说,20万字以上。任取其中10个人物,考虑他们的姓名、别名等等一系列因素。(1)统计每个人在小说中出现的次数并排序。(2)统计每个人在小说中出现的篇幅跨度(第一次出现距最后一次出现的篇幅)并排序。(3) 如果两人在相距较短的一段文字中出现,我们认为两人有关系,距离越短,关系越近。自行设计统计标准,找出10个人中:1)关系最紧密的两个人,关系最不紧密的两个人。2)输入一个人名,列出该人和其他人关系的紧密程度排名。看与实际是否符合?如果不太符合,说明可能的原因。 二需求分析 本演示程序用 eclipse 编写,

2、完成小说人物的出现次数统计,人物篇幅跨度统计以及人物间亲密程度的统计。 1统计人物出现次数:编写一个函数,当传入参数为人物名称时可统计该人物名在小说中的出现次数。 人物篇幅跨度:编写一个函数,当传入参数为人物名称是可统计该人物名在小说中第一次出现的位置以及最后一次出现的位置,将最后一次出现位置减去第一次出现的位置比去小说通篇长度可得该人物名在小说中的人物篇幅跨度。 人物间亲密程度:编写一个函数,当传入参数为人物名一和人物名二时,统计人物名一与人物名二同时在某个字数范围内出现的篇幅占人物名一的篇幅之比就是人物名一与人物名二的亲密程度。 制作功能选择界面:界面包含有十个人物名的下拉列表,三个功能排

3、序按钮,一个文本区域可输出统计结果。三概要设计 1)为了实现上述程序功能,需要定义一下几个类: Interface类:该程序的功能选择界面,包含main函数。 Novelfunction1类:用来实现程序的第一个功能的类。 Novelfunction2类:用来实现程序的第二个功能的类。 Novelfunction3类:用来实现程序的第三个功能的类。 Saver类:用来保存程序运行后的统计结果,结果将统计在result.txt中。 在程序运行中,在界面中的下拉列表选定一位人物,选定后在界面的文本区域中会输出该人物在小说中的出现次数,篇幅跨度以及与其他九个人物间的亲密程度;在界面中点击功能按钮“人

4、物出现次数排序”,点击后文本区域会输出十个人物在小说中出现次数的升序排序;在界面中点击功能按钮“人物篇幅跨度排序”,点击后文本区域会输出十个人物在小说中篇幅跨度的升序排序;在界面中点击功能按钮“人物关系密度排序”,点击后文本区域中会输出十个人物间亲密程度最高的一组和亲密程度最低的一组结果。四.源代码:Interface:package novelproject;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JComboBox;import javax.swing.JLabel;importt;imp

5、ort 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.

6、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 implements ItemListener,ActionListener private JLabel jbl=n

7、ew 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(关系

8、密度排序); private JTextArea jta=new JTextArea(以下是结果:n,30,30); private static String personname=null; private static String arr1=new String汤川,草薙,岸谷,间宫,石神,靖子,美里,富坚,工藤,小代子; private static int arr2=new int10; private static HashMap rls=new HashMap(); private Font font1=new Font(黑体,Font.BOLD,20); private Fo

9、nt 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(石神);

10、 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;

11、 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()

12、,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); jb

13、t1.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() cas

14、e 汤川: 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=小代子

15、; 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.print

16、StackTrace(); public void actionPerformed(ActionEvent e) if(e.getSource()=jbt1) int i; HashMap hm=new HashMap(); for(i=0;i10;i+) try byte data=NovelFunction1.getData(); arr2i=NovelFunction1.stat(data,arr1i); hm.put(arr2i,arr1i); catch (Exception e1) e1.printStackTrace(); Arrays.sort(arr2); jta.setTe

17、xt(以下是结果:n); for(int a:arr2) jta.append(hm.get(a)+ 的出现次数:+a+n); else if(e.getSource()=jbt2) int i; float arr3=new float10; HashMap hm=new HashMap(); for(i=0;i10;i+) try arr3i=NovelFunction2.Span(arr1i); hm.put(arr3i,arr1i); catch (Exception e1) e1.printStackTrace(); Arrays.sort(arr3); jta.setText(以下

18、是结果:n); for(float a:arr3) jta.append(hm.get(a)+ 的篇幅跨度为:+a+%+n); else if(e.getSource()=jbt3) jta.setText(以下是结果:n); for(int i= 0;i10;i+) try rls=NovelFunction3.Relationship2(arr1i); for(String a:arr1) if(arr1i!=a) if(rls.get(a)=100) jta.append(arr1i+与+a+最亲密为:+rls.get(a)+n); catch (Exception e1) e1.pri

19、ntStackTrace(); for(int i= 0;i10;i+) try rls=NovelFunction3.Relationship2(arr1i); for(String a:arr1) if(arr1i!=a) if(rls.get(a)=0) jta.append(arr1i+与+a+最不亲密为:+rls.get(a)+n); catch (Exception e1) e1.printStackTrace(); else System.exit(0); public static void main(String args) throws Exception new Inte

20、rface(); 2NovelFunction1: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.

21、read(data); fis.close(); return data; public static int stat(byte data,String pn)throws Exception /统计次数 String dataStr=new String(data); int time=0; for(int i=0;idataStr.length()-pn.length()-1;i+) String s3 =dataStr.substring(i,i+pn.length().toString(); if(s3.equals(pn) time+; return time; 3NovelFun

22、ction2:package novelproject;import java.util.HashMap;public class NovelFunction2 public static float Span(String pn)throws Exception byte data=NovelFunction1.getData(); HashMap hm1=new HashMap(); HashMap hm2=new HashMap(); HashMap hm3=new HashMap(); String dataStr=new String(data); int time=0; for(i

23、nt i=0;idataStr.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); 4NovelFunction3:package nov

24、elproject;import java.util.HashMap;public class NovelFunction3 private static float rs=new float10; private static HashMap rls=new HashMap(); private static String arr=new String汤川,草薙,岸谷,间宫,石神,靖子,美里,富坚,工藤,小代子; public static float Relationship1(String pn1,String pn2)throws Exception byte data=NovelFu

25、nction1.getData(); String dataStr=new String(data); int time=NovelFunction1.stat(data,pn1); int score=0; int length1=0; int length2=1000; for(;(length2dataStr.length();length1+=1000,length2+=1000) for(int i=length1;ilength2-pn1.length()-1;i+) String s1=dataStr.substring(i,i+pn1.length().toString();

26、for(int j=length1;(s1.equals(pn1)&(jlength2-pn2.length()-1);j+) String s2=dataStr.substring(j,j+pn2.length().toString(); if(s2.equals(pn2) score+; break; float rs=(score*10000)/time); return rs/100; public static HashMap Relationship2(String pn)throws Exception for(int i=0;i10;i+) rsi=Relationship1(pn,arri); rls.put(arri,rsi); return rls; 5Saver: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

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1