Java编程论文.docx
- 文档编号:5108089
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:14
- 大小:86.56KB
Java编程论文.docx
《Java编程论文.docx》由会员分享,可在线阅读,更多相关《Java编程论文.docx(14页珍藏版)》请在冰豆网上搜索。
Java编程论文
面向对象程序设计
题目:
单词统计
摘要
本程序主要是用来对在文件中输入的若干个单词(每个单词可重复一次或多次)进行筛选检测。
编程实现统计每个单词重复次数,并对非重复的单词进行排序,将排序结果输出到文件中。
程序中主要使用了JFileChooser控件,并在其中实现了文件的类型过滤功能,从而达到从本地机器中选出要检测的文本文件。
对文件中的没有重复出现的单词使用集合类方法进行排序。
对文件内容的读取和对结果的显示使用的文件流的操作。
将文件的内容读取到文本域。
对文本实现添加滚动条功能,使用的是JScrollPane。
对界面的布局使用的绝对布局,按钮的时间处理机制,还有一些其他的窗口属性设置。
程序的整个思想流程:
浏览文件,选中文件之后,对文件的内容进行分析,对单词进行统计,排序,之后将生成的结果写入一个临时文件中,再通过文件的读取,将结果读取并显示到界面中的文本域。
1前言(或“绪论”)
1.1设计任务
1.1.1需求说明
《JAVA程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。
实践环节是必不可少的一个重要环节。
学习完《JAVA程序设计》课程后,进行程序设计是一次全面的综合训练,JAVA程序设计的设计目的是加深对所学内容的理解和掌握,系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为以后综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。
1.2设计内容
(1)程序要求
(2)算法分析(3)流程图(4)源程序(5)调试及运行结果(6)体会
2程序要求
单词检测器是java集合类和界面编程的一个小小的应用,其完成的功能是:
在文件中输入若干个单词(每个单词可重复一次或多次),然后选择到这个文件。
实现统计每个单词重复次数,并对非重复的单词进行排序,将排序结果输出到文件中。
并显示到界面上。
3算法分析
一、在此程序中用到了几个关键技术:
“浏览”功能的实现。
使用了JFileChooser控件,并在其中实现了文件的类型过滤功能。
从而达到从本地机器中选出要检测的文本文件。
2.对文件中的每个单词实现统计功能,使用的集合类,并且对没有重复出现的单词也是使用集合类方法进行排序。
3.对文件内容的读取和对结果的显示使用的文件流的操作。
其中结果的显示思想,是先将结果生成一个文件进行保存,之后再对此文件内容进行读取到文本域。
4.将文件的内容读取到文本域。
使用的是先将文件内容读取到字符串中,之后进行再使用文本域的设置文本内容方法,进行追加。
并实现换行功能。
5.对文本实现添加滚动条功能,以便在内容多的时候,能够浏览所有结果,使用的是JScrollPane。
6.对界面的布局使用的绝对布局,按钮的时间处理机制,还有一些其他的窗口属性设置。
二、程序的整个思想流程:
浏览文件,选中文件之后,对文件的内容进行分析,对单词进行统计,排序,之后将生成的结果写入一个临时文件中,再通过文件的读取,将结果读取并显示到界面中的文本域。
4流程图(或框图、模块图)
将结果显示到文本域
5程序源代码
importjava.awt.BorderLayout;
importjava.awt.Color;
importjava.awt.Container;
import;
import;
import;
import;
importctionEvent;
importjava.awt.event.ActionListener;
importjava.io.BufferedReader;
importjava.io.File;
importjava.io.FileReader;
importjava.io.FileWriter;
importjava.io.IOException;
importjava.text.Collator;
importjava.util.ArrayList;
importjava.util.Collections;
importjava.util.Comparator;
importjava.util.HashMap;
importjava.util.List;
importjava.util.Map;
importjavax.swing.JButton;
importjavax.swing.JFileChooser;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
import;
importjavax.swing.JOptionPane;
import;
importjavax.swing.JScrollPane;
importjavax.swing.JTextArea;
importjavax.swing.JTextField;
importjavax.swing.filechooser.FileFilter;
import;
publicclassMyTestextendsJFrame{
JButtonbtok;
JButtonbtquit;
JButtonbtopen;
publicJTextArearesult;
JTextFieldfilepath;
JFileChooserfc;
privatestaticMap
publicstaticvoidtongJi(Filef)
{
try
{
BufferedReaderreader=newBufferedReader(newFileReader(f));
Stringstr=null;
//从文件中读取没一行,然后用“,”或“.”分割,如果再m中没有该子串的话,就计数为1,如果有的话
就加1,这样执行完以后,就统计出了每个子串出现的次数
while((str=reader.readLine())!
=null)
{
//正则表达式
str=str.replaceAll("[,.]","");
for(Strings:
str.split(""))
{
if(s.length()==0)continue;
if(m.containsKey(s))
{
intamount=m.get(s)+1;
m.put(s,amount);
}else
{
m.put(s,1);
}
}
}
reader.close();
}catch(IOExceptione)
{
}
}
publicstaticList
{
List
Collections.sort(list,newComparator
publicintcompare(Map.Entry
returnCollator.getInstancey());
}
});
returnlist;
}
publicMyTest(){
super("单词检测器");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//获得根容器
Containerct=this.getContentPane();
//设置根容器的布局
ct.setLayout(newBorderLayout());
JLabelbg=newJLabel();
JLabellblfile=newJLabel("请选择文件");
JLabellblresult=newJLabel("检测结果");
filepath=newJTextField();
filepath.setEditable(false);
fc=newJFileChooser();
MPPFileFilterfilter=newMPPFileFilter();
//去掉显示所有文件这个过滤器
fc.setAcceptAllFileFilterUsed(false);
fc.setFileFilter(filter);
result=newJTextArea();
result.setEditable(false);
//为结果文本框添加滚动条
JScrollPanesPane=newJScrollPane(result);
btopen=newJButton("浏览");
btok=newJButton("开始检测");
btquit=newJButton("退出");
//设置标签的属性
bg.setLayout(null);
bg.setBackground(Color.cyan);
bg.setOpaque(true);
//设置组件的属性
lblfile.setBounds(30,30,100,30);
filepath.setBounds(130,30,200,30);
btopen.setBounds(330,30,60,30);
lblresult.setBounds(30,80,100,30);
sPane.setBounds(130,80,330,220);
btok.setBounds(120,320,100,30);
btquit.setBounds(240,320,100,30);
//
MyListenerml=newMyListener();
btok.addActionListener(ml);
btopen.addActionListener(ml);
btquit.addActionListener(ml);
//添加组件
bg.add(lblfile);
bg.add(filepath);
bg.add(btopen);
bg.add(lblresult);
bg.add(sPane);
bg.add(btok);
bg.add(btquit);
//自动换行
result.setLineWrap(true);
ct.add(bg,BorderLayout.CENTER);
pack();
this.setLocation(300,200);
this.setSize(500,400);
this.setResizable(false);
this.setVisible(true);
}
//浏览文件时候进行文件类型过滤
publicclassMPPFileFilterextendsFileFilter{
publicbooleanaccept(Filef){
Stringtmp=f.getName().toLowerCase();
//显示文件夹
if(f.isDirectory()){
returntrue;
}
//循环过滤文件过滤
if(tmp.endsWith(".txt")){
returntrue;
}
returnfalse;
}
publicStringgetDescription(){
return"文本文件(*.txt)";
}
}
//
classMyListenerimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
JButtonbt=(JButton)e.getSource();
if(bt==btok){
Stringstr=filepath.getText();
try{
if(str.equals("")){
JOptionPane.showConfirmDialog(null,"请选择文件","请选择文件",JOptionPane.YES_NO_OPTION);
}
Filef=newFile(str);
tongJi(f);
List
Fileout=newFile("c:
\\2.txt");
if(!
out.exists())out.createNewFile();
FileWriterfw=newFileWriter(out);
fw.write("统计记录:
"+"\r\n");
for(Map.Entry
m.entrySet())
{
fw.write(entry.getKey()+""+entry.getValue()+"次"+"\r\n");
}
fw.write("非重复数排序:
");
for(Map.Entry
result)
{
if(entry.getValue()==1)
{
fw.write(entry.getKey()+"");
}
}
fw.close();
BufferedReaderreader=newBufferedReader(newFileReader("c:
\\2.txt"));
Stringline=reader.readLine();
Stringall=null;
//每次显示结果前先清除上次的结果
MyTest.this.result.setText("");
//读结果并显示
while(line!
=null){
MyTest.this.result.append(line);
MyTest.this.result.append("\n");
line=reader.readLine();
}
MyTest.this.result.append(all);
}
catch(IOExceptionex){ex.printStackTrace();}
}
if(bt==btquit){
//退出系统
System.exit(0);
}
if(bt==btopen){
//实现文件浏览
intretValue=fc.showOpenDialog(btopen);
if(retValue==JFileChooser.APPROVE_OPTION){
filepath.setText(fc.getSelectedFile().toString());
}
}
}
}
//主函数
publicstaticvoidmain(String[]args)throwsIOException
{
MyTestmt=newMyTest();
}
}
6调试及运行结果
1.程序运行后的主界面
2.点“浏览”选择要检测的文件界面
3.结果显示界面
7体会
经过一个星期的上机实践学习,使我对java语言有了更进一步的认识和了解,对java的界面编程和布局管理,事件处理机制,集合类的操作都有了一个深入的了解。
要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,通过实践,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有对java语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对java语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。
通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习java语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。
8参考文献
1.耿祥义Java大学实用教程电子工业出版社2005-03
2.吴其庆Java程序设计实例教程冶金工业出版社2007-11
3.王路群Java高级程序设计中国水利水电出版社2009-8
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 编程 论文