軟體構造 Lab1

2021-09-24 09:17:05 字數 891 閱讀 3763

①判斷幻方:

我採取的讀檔案的方法時建立乙個輸出流,將檔案中的資料輸出到乙個byte【】陣列中。將這個資料流按照utf-8的格式存入乙個string變數中。之後呼叫string的split方法,將其按「\n」分割,這樣就得到了每一行的資料,獲取string陣列的長度即為行數,接下來對每一行分別按小數點和負號進行split,如果長度發生改變,說明含有小數或負數,可以直接返回false。

如果沒有,則繼續對每一行按「\t」split,如果分割後期長度不等於行數,則行列數不等或不是矩陣,直接返回false。

如果相等,則將數一次存入乙個int二維陣列的相應位置,最後計算每行每列和兩個對角線上的元素和是否相等即可

②向檔案輸出幻方:

第一次編寫時,我使用了如下語句

printstream ps=new printstream(「src/p1/txt/6.txt」); //建立乙個列印輸出流,輸出到6.txt

system.setout(ps); //把建立的列印輸出流賦值給系統(系統下次向ps輸出)

通過將下一次輸出轉向ps以達到向txt.6輸入的目的,但我發現之後沒辦法改回來,之後每一次輸出都向txt.6輸出了,所以我放棄了這個辦法。之後我採用了常規方法,建立乙個輸入流,用write方法逐行寫入。

③計算凸包

我採用的方法是呼叫之前寫好的方法,從最左邊的點開始,每次搜尋需要轉向角最小的點,即為下乙個凸包點,這樣順時針搜尋一圈,回到初始角時結束,此時可得到乙個凸包。

④計算最短路徑

我採用的用於計算兩點最短路徑的方法為廣度優先搜尋,首先從a點開始,其深度deep記為0,遍歷所有鄰接點,由a遍歷到的點存入佇列,記為已訪問,深度deep為a的深度deep加1,即為1,在從中乙個個遍歷鄰接點並記錄深度,直到找到點b,此時b點的深度為a,b兩點間的最短距離。如果隊列為空還未找到,則返回-1

軟體構造Lab1

scanner類 hasnext,next,nextint,nextline等方法用於讀入 file類 讀入檔案所使用的的類,作為scanner建立時的引數 printstream 類 printstream ps newprintstream src p1 txt 6.txt system.set...

作業系統實驗課程 Lab1

lab1 bootloader interrupt device driver 啟動作業系統的bootloader,了解作業系統啟動前的狀態和要做的準備工作,了解執行作業系統的硬體支援,作業系統如何載入到記憶體中,理解兩類中斷 外設中斷 陷阱中斷 等 1.基於分段機制的儲存管理 2.裝置管理的基本概...

軟體構造 Lab3

遇到的一些問題 按鈕 覆寫 由於我的gui的實現是由乙個基礎類和三個子類組成,其中基礎類的一些按鈕的 實現要在子類中覆寫,但是我一直找不到好的方法去覆寫,所以我直接在子類中遍歷了該按鈕的所有 把它們都刪了然後重加 正規表示式匹配 在這個實驗裡我發現了正規表示式的乙個好用的功能,比如在匹配如下資訊時 ...