VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > Java教程 >
  • Javafx-【直方图】文本频次统计工具 中文/英文单词统计

上周倒腾了下 javafx,本来是做平时成绩系统。跟老师提了一下 javafx,他突然兴起,发了个统计中文和英文单词并以直方图显示的实验......只给两三天的期限,笑着说考验我们的潜力SOS,于是带着组里一共三人花了一天半时间做了下来。

主要界面如下

没选文本时,如果没勾选完就点开始分析会显示提示

image

分析文本文档

image

只有一个功能,就是选择本地 .txt 文件,选择文本语言和最低频次,然后显示直方图统计结果。
试了下大的 .txt 文档,超出界面后面的就无法显示,x轴和柱形条对不齐,还没改这个bug,目前想着是添加拉条,但感觉看起来也不方便。
image
更希望能做成水平直方图,貌似 javafx 封装的 BarChart 把 x 轴和 y 轴能放的数据类型固定了。在 Youtube 看到有自己封装BarChart,很不错!(plus 上面好多javafx UI 界面也很绝!
因为时间很紧急,然后也是初学,代码惨不忍睹,Java 功底不扎实,Javafx 控件使用也一知半解。放些主要功能的实现代码
筛选出中英文都用的正则表达式!!! 只是对英文那个 's 会有问题,因为 ' 那也分割了,暂时不知道怎么改,下面是代码


	
 
public static void Analysis(String flag) throws IOException
 
{
 
int bufferSize = 20 * 1024 * 1024;
 
File file = new File(AnalysisFile);
 
FileInputStream fileInputStream = new FileInputStream(file);
 
BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
 
InputStreamReader inputStreamReader = new InputStreamReader(bufferedInputStream);
 
BufferedReader input = new BufferedReader(inputStreamReader, bufferSize);
 
String line;
 
while((line = input.readLine()) != null) {
 
if(flag == "英文") { // Combox 那选择中英文带过来的参数 flag
 
String[] str = line.split("\\W"); // 使用正则表达式以非字母,数字,下划线的符号分割
 
for(String e : str) {
 
if(e.matches("[a-z]+")) { // 筛选出英文单词
 
if(sumOfWords.containsKey(e)) {
 
int num = sumOfWords.get(e);
 
sumOfWords.put(e, num + 1);
 
}
 
else sumOfWords.put(e, 1);
 
}
 
}
 
}
 
else if(flag == "中文") {
 
String d;
 
char[] charArray = line.toCharArray(); //将字符串转换为字符数组
 
for(int x = 0;x < charArray.length;x++) { //循环遍历字符数组
 
d=Character.toString(charArray[x]); //返回一个字符串对象
 
if (d.matches("[\\u4e00-\\u9fa5]")) {//判断是否为汉字
 
if(!sumOfChinese.containsKey(charArray[x])) {
 
sumOfChinese.put(charArray[x], 1);
 
} else {
 
sumOfChinese.put(charArray[x],sumOfChinese.get(charArray[x])+1);
 
}
 
}
 
}
 
}
 
}
 
input.close();

点击选择文件时,打开本地文件选择器的代码


	
 
@FXML
 
void choosefile(ActionEvent event) {
 
Stage primaryStage = new Stage();
 
FileChooser fileChooser = new FileChooser();
 
FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("TXT files (*.txt)", "*.txt");
 
fileChooser.getExtensionFilters().add(extFilter);
 
File file = fileChooser.showOpenDialog(primaryStage);
 
if(file != null) {
 
FileInputField.setText(file.getAbsolutePath());
 
AnalysisFile = String.valueOf(file);
 
TipLabel.setText("");
 
}
 
}

最后提交前本来想打包成 .exe 文件,控制台用jdk里packager打包出现乱码,解决过程中想到,这是个仍有bug并且没什么作用的工具,随即放弃打包。之后有时间重新写一下,修正 bug 后加些功能就会上传到 github,组里取名Useless Tool,所以只能说供初学者参考了 12月份还得交学生平时成绩管理系统那个项目,比较麻烦,三种参与者,十个活动。设计数据库都想了好久(数据库还没看到设计那章,只能自己瞎设计。这个项目做下来也会上传!在这之前还需要多看看java和数据库,规范下类的设计和数据库设计,不至于代码写的:/自己都不想再看第二眼

本文来自博客园,作者:01kkkrill,转载请注明原文链接:https://www.cnblogs.com/krill/p/15531513.html

 
分类: Javafx


相关教程