天天看點

第二次個人程式設計作業-互改代碼

這個作業屬于哪個課程 軟體工程 (福州大學至誠學院 - 計算機工程系)
這個作業要求在哪裡 第二次個人程式設計作業
這個作業的目标 添加Issues模闆、用分支管理來送出代碼、使用有意義的Commit資訊
作業正文 如下
其他參考文獻

設定issue模闆

為倉庫配置議題模闆

如何使用 Issue 管理軟體項目?

主要參考這兩個文章

自己倉庫的commit送出資訊截圖

第二次個人程式設計作業-互改代碼
第二次個人程式設計作業-互改代碼
第二次個人程式設計作業-互改代碼

送出issue

1.自提自改

第二次個人程式設計作業-互改代碼

添加了一個Test類和testFile.txt

Test類讀取testFile.txt中的測試資料,測試程式的執行情況

public class Test {

	public static void main(String[] args) throws IOException {
		BufferedReader in = new BufferedReader(new FileReader("testFile.txt"));
		String str;
		int i = 1;
		while ((str = in.readLine()) != null) {
			if (str.equals("")) {
				System.out.println();
			} else if (str.substring(0, 1).equals("*")) {
				System.out.println("正确輸出---->" + str.substring(1));
			} else if (str.substring(0, 1).equals("-")) {
				System.out.println("####   " + str.substring(1) + "    ####");
			} else {
				System.err.println(i + ":" + str);
				Utils.runMain(str);
				i++;
			}

		}

	}

}

           

2.OMG

部落格位址:部落格

倉庫位址:GitHub倉庫

第二次個人程式設計作業-互改代碼

3.211706135

第二次個人程式設計作業-互改代碼

4.Destiny*

第二次個人程式設計作業-互改代碼

5.repcjw

第二次個人程式設計作業-互改代碼

6.ANNOMING

暫時還沒有發現這個大佬的代碼有什麼問題

不過我從他的代碼中學到了一個比較巧妙的分割字元串方法

分割字元串,大多數人想到的是:

String [] strArr = str.split(" ");
           

這樣固然能分割字元串,但是如果字元中間有多餘的空格,空格也可能被加入split傳回的數組,這可能會導緻程式出現問題

這位大佬用正則來處理,這樣就能不受多餘空格的影響

String[] str = input.split("\\s+");
           

7.梁梁梁+

第二次個人程式設計作業-互改代碼

8.xiaoming123456

第二次個人程式設計作業-互改代碼

9.隼s

第二次個人程式設計作業-互改代碼
第二次個人程式設計作業-互改代碼

寫到這裡我發現了一個問題,好像沒有其他寫Java的朋友了

10.自提自改?

感謝 ANNOMING ,發現了我代碼中非法輸入導緻的數組越界問題

第二次個人程式設計作業-互改代碼

對于不同方法的輸入進行了更嚴格的判斷,確定資料合法,不會出現越界

public static void assignInt(String str) {
		String[] strArr = str.trim().split("\\s+");
		// 短路 是以不會越界
		if (strArr.length != 4 || !strArr[2].equals("等于")) {
			throw new DemoException("文法有錯,請檢查文法");
		}

		setVar(strArr[1], toNum(strArr[3]));
	}
           

對于數組的使用,先對下标進行判斷再使用

if (strArr.length == 2) {
			String varStr = strArr[1];
			if (isVar(varStr)) {
				System.out.println(toChStr(getVar(varStr)));
				return;
			} else if (!varStr.contains("“") && !varStr.contains("”")) {
				throw new DemoException("變量:" + varStr + " 未定義,請定義變量");
			}
			
		}
           
String[] strArr = str.trim().split("\\s+");
		if (strArr.length != 3) {
			throw new DemoException("文法有錯,請檢查文法");
		}
		String leftStr = strArr[0];
		String rightStr = strArr[2];
		String middle = strArr[1];
           

回複issue

來自 ANNOMING

第二次個人程式設計作業-互改代碼