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