上周倒騰了下 javafx,本來是做平時成績系統,跟老師提了一下 javafx,他突然興起,發了個統計中文和英文單詞并以直方圖顯示的實驗......只給兩三天的期限,笑著說考驗我們的潛力SOS,于是帶著組里一共三人花了一天半時間做了下來,
主要界面如下
沒選文本時,如果沒勾選完就點開始分析會顯示提示

分析文本檔案

只有一個功能,就是選擇本地 .txt 檔案,選擇文本語言和最低頻次,然后顯示直方圖統計結果,
試了下大的 .txt 檔案,超出界面后面的就無法顯示,x軸和柱形條對不齊,還沒改這個bug,目前想著是添加拉條,但感覺看起來也不方便,

更希望能做成水平直方圖,貌似 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
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/354462.html
標籤:其他
