哈工大-软件构造-Lab1-P3相关问题
前言
接着之前的博客,这里简述一下在实验1的P3里我遇到的或同学遇到的一些问题
类中private的初始化
在P3的问题中,我们要构建一个Person类,为了让构建的类有更好的私密性,我们将数据命名为private,这时,在直接调用和初始化的时候,就会产生报错,这是因为private不能直接被外部调用,对于private的数据,要单独写函数来实现调用和初始化的过程。
比如:
private final String name;
这是我们要建立的Person的名字,对此在创建的时候,我们应该
public Person(String name) {
this.name = name;
}
同理,在使用的时候,也要
public String getname() {
return name;
}
对print出来的信息的测试
我们老师要求对错误的情况进行test,而且还不能把error直接throw出来,对此,我想到的方法就是在输入不符合我们的预期的时候,System.out.print(“错误提示”),这样,我们就只要检测,输出的信息是不是正确的就可以了。
关于怎么检验print,我的想法是将print出来的东西,存储在一个String里面,在调用我们熟悉的assertEquals进行比较就可以了。
在网上查了很多怎么存储print的方法,但每次拿来用都会出现问题,在不断的实践之后,总结出如下的方法:
PrintStream old = System.out;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
System.setOut(new PrintStream(baos));
/*
进行正常的函数运行
*/
String printStr= baos.toString();
System.setOut(old);
String str = "错误提示";
assertEquals(str, printStr);
对此,我的理解是:在初始情况下,控制台之所以有print输出,是因为有个PrintStream指向了控制台,所有,我们要先记录下这个PrintStream,方便日后再归复原样。之后将输出的方向变成一个ByteArrayOutputStream,之后调用toString方法将它转换成字符串,再根据之前保留的PrintStream将输出的方向变为控制台,就万事大吉了。
向GitHub进行提交与删除
首先是当你提交错误的时候,如何将仓库里的东西删除:
(如果要全部删除,就请将第4个$改成:git rm -r --cached *)
(删除之后要把文件夹里的.git文件删除)
提交的方法是:
如果你要教某个文件夹里里的几个文件夹(如:A文件夹里的a文件夹和b文件夹)那么,你就要进入A里面(A的目录下),就要将git add README.md换成git add -f a和git add -f b