《Java》Java实现一个“以鹿鼎记文字内容为角度,分析主、配角亲密程度”的应用程序——原著的文本文件做数据源

【韦小宝和他的七个老婆】

    韦小宝这个人是金庸笔下的唯一一个不会武功却又如鱼得水角色,身边有七个老婆相伴,他更是许多金庸迷羡慕的人:权势、地位甚至红颜知己。那么问题来了,七人中哪个是韦小宝最爱的,哪个又是最爱他的人呢?下面博主就从计算机的角度来为大家分析一下。
在这里插入图片描述

一、如何分析?

    分析的思路很简单,就是将原著的文本文件作为数据源,通过程序来计算韦小宝分别和他的七位老婆出现在同一个句子中的次数,次数最多的即为韦小宝最爱,当然这是从文字的角度来谈的。

数据源 ldj.txt

在这里插入图片描述

二、编程思路

    程序设计思路流程如下:
在这里插入图片描述

三、源程序
【contrast.java】
import java.io.*;

public class contrast { // 创建类
	public static void main(String[] args) { // 主方法

		int sum_end = 0;   //总的句号(。)次数
		int end_mark = 0;  //句号(。)计次
		int data_count = 0; //数据计次
		boolean flag = true;  //控制while循环的标志
		int count[] = new int[7]; //计"主、配角出现次数"
		//名字数据:阿珂、双儿、方怡、沐剑屏、曾柔、苏荃、建宁公主
		int name[][] = {{38463,29634,0},{21452,20799,0},{26041,24609,0},
		{27792,21073,23631},{26366,26580,0},{33487,33603,0},{24314,23425,0}};
		
		File file = new File(args[0]); // 创建文件对象

		int rom[] = new int[(int) file.length()]; //定于储存数据的数组
		int data_rom[] = new int[(int) file.length()];
		try {
			FileReader fr = new FileReader(file); //创建FileReader类对象
			// 创建BufferedReader类对象
			BufferedReader bufr = new BufferedReader(fr); //创建BufferedReader类对象 

			for(int sum=0;sum<file.length();sum++) //循环读完整个文件
			{
				rom[sum] = bufr.read(); //"读"函数
				if(rom[sum]==12290)
				{
					sum_end++; //总的句号数
				}
			}

			while(flag)
			{
				int m = 0; //"韦小宝"标记符
				int mark = 0; 
				int rl = 0;
				int fl = (int) file.length();
				for(int i=0;i<fl;i++) //以句号为结束标志每次读一句
				{
					data_rom[i] = rom[data_count];
					data_count++;
					if(data_rom[i]==12290)
					{
						fl = 1;
						end_mark++;
					}
					rl = i+1;
				}
				for(int j=0;j<rl;j++) //判断此句子中是否出现"韦小宝"三个字
				{
					if(data_rom[j]==38886)
					{
						mark = j+1;
						if(data_rom[mark]==23567)
						{
							mark += 1;
							if(data_rom[mark]==23453)
							{
								m = 1; 
							}
						}
					}
				}
				for(int r=0;r<7;r++) //循环判断此句子中那几位"老婆"出现
				{
					int wm = 0;  //"老婆"标记符
					for(int k=0;k<rl;k++)
					{
						if(data_rom[k]==name[r][0])
						{
							mark = k+1;
							if(data_rom[mark]==name[r][1])
							{
								mark += 1;
								wm = 1;
								if(name[r][2]!=0)
								{
									wm = 0;
									if(data_rom[mark]==name[r][2])
									{
										wm = 1;
									}
								}
							}
						}
					}
					if(m==1 && wm==1) //主、配角同时出现就+1
					{
						count[r]++;
					}
				}
				if(end_mark==sum_end) //读到最后一个句号就跳出while循环
				{
					flag = false;
				}
			}
			System.out.println("\n韦小宝分别和他的七位妻子出现在同一句子中的次数:\n");
			System.out.println("[韦小宝-阿珂]-------"+count[0]);
			System.out.println("[韦小宝-双儿]-------"+count[1]);
			System.out.println("[韦小宝-方怡]-------"+count[2]);
			System.out.println("[韦小宝-沐剑屏]-----"+count[3]);
			System.out.println("[韦小宝-曾柔]-------"+count[4]);
			System.out.println("[韦小宝-苏荃]-------"+count[5]);
			System.out.println("[韦小宝-建宁公主]---"+count[6]);
		} catch (Exception e) { // 处理异常
			e.printStackTrace();
		}
	}
}
四、分析结果

在这里插入图片描述
从结果可以看出,韦小宝和双儿出现在同一句子中的次数最多。
所以得出结论:在作者金庸笔下,韦小宝的最爱是“双儿”

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值