第二次个人编程作业-互改代码

这个作业属于哪个课程 软件工程
这个作业要求在哪里 第二次个人编程作业
这个作业的目标 添加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

博客地址:博客

仓库地址:GitHub仓库

4.Destiny*

博客地址:博客

仓库地址:GitHub仓库

5.repcjw

博客地址:博客

仓库地址:GitHub仓库

6.ANNOMING

博客地址:博客

仓库地址:GitHub仓库

暂时还没有发现这个大佬的代码有什么问题
不过我从他的代码中学到了一个比较巧妙的分割字符串方法
分割字符串,大多数人想到的是:

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

这样固然能分割字符串,但是如果字符中间有多余的空格,空格也可能被加入split返回的数组,这可能会导致程序出现问题
这位大佬用正则来处理,这样就能不受多余空格的影响

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

7.梁梁梁+

博客地址:博客

仓库地址:GitHub仓库

8.xiaoming123456

博客地址:博客

仓库地址:GitHub仓库

9.隼s

博客地址:博客

仓库地址:GitHub仓库


写到这里我发现了一个问题,好像没有其他写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

posted @ 2020-02-11 00:10  AaronLin  阅读(384)  评论(0编辑  收藏  举报