130242014047-徐曉敏-第3次實驗
阿新 • • 發佈:2017-11-20
關鍵字 功能 思想 edate tex .text lose .com 分享圖片
一、實驗目的
1.理解不同體系結構風格的具體內涵。
2.學習體系結構風格的具體實踐。
二、實驗環境
硬件: win10
軟件:Java
三、實驗內
“上下文關鍵字”KWIC(Key Word in Context,文本中的關鍵字)檢索系統接受有序的行集合:每一行是單詞的有序集合;每一個單詞又是字母的有序集合。通過重復地刪除航中第一個單詞,並把它插入行尾,每一行可以被“循環地移動”。KWIC檢索系統以字母表的順序輸出一個所有行循環移動的列表。
嘗試用不同的策略實現這個系統。選擇2-3種體系結構風格來實現。
四、實驗步驟:
要求寫具體實現代碼,並根據實際程序,畫出程序的總體體系結構圖和算法結構圖,以及運行結果截圖。
例如,采用主/子程序的風格
1、體系結構圖:
2、簡述體系結構各部件的主要功能,實現思想。
例如:
上述的主程序/子程序的方法,將問題分解為輸入(Input)、移動(Shift)、按字母表排序(sort)、去重(distinct)、輸出(Output)。
Input: 將讀取到的每行的數據保存到ArrayList<String>定義的rawStrlist中
shift:主函數調用該方法,該方法對rawStrlist中的每行的數據進行循環移位,並將移位得到的新行保存到新的list中
sort:主函數調用該方法, 對list中得到的行數據進行按字母順序排序,放在orderedList中
distinct:主函數調用該方法,對orderedList進行去重。得到distinctList
Output:主程序調用output方法,將distinctList存儲到文本中
3、寫出主要的代碼
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; public class T21 { public static void main(String[] args) { output(sort(moveClass(inputClass()))); } /** * 輸入內容 */ public static List inputClass(){ System.out.println("請輸入"); Scanner s = new Scanner(System.in); List list = new ArrayList(); while (true) { String text = s.nextLine(); if ("".equals(text)) { break; } list.add(text); } System.out.println(list); s.close(); return list; } /** * 循環移動 */ public static List<String> moveClass(List<String> list){ List resList = new ArrayList(); for(int i = 0;i<list.size();i++) { String str = list.get(i); str = str.trim(); String[] strArr = str.split(" ");//獲取行的單詞數組 for(int j = 0;j<strArr.length;j++){ int len = strArr.length+1; str = str.substring(str.length()-len)+" "+strArr[j]; resList.add(str); } } return resList; } /** * 排序 */ public static List<String> sort(List<String> list) { Collections.sort(list); return list; } /** * 輸出 */ public static void output(List<String> list) { System.out.println("----------Output----------"); for (String str : list) { System.out.println(str); } } }
4、顯示結果:
130242014047-徐曉敏-第3次實驗