一.不可转换类型“Inconvertible types; cannot cast 'Project.team.domain.Programmer' to 'Project.team.domain.Architect'”
如图所示,在编写判断当前团队程序员数量时,判断语句
!(team[i] instanceof Architect) 内部报错,提示“Inconvertible types; cannot cast 'Project.team.domain.Programmer' to 'Project.team.domain.Architect'”,翻译过来就是 “不可转换类型;无法将“Project.team.domain.Programmer”转换为“Project.team.domain.Architect”
查了资料,有可能是包路径导入缺失,可能缺少了Architect相关的包路径,可是查看后发现包路径存在,那就只能是缺少了Architect相关的包路径或者其他问题。
布局完所有模块后报错果然消失了
二.单引号双引号的误用
在用户页面修改代码的编写中,有一个值得注意的点,我们在使用if判断时,用的是单引号,一旦使用双引号就会报错,“Operator '==' cannot be applied to 'char', 'java.lang.String'”
这是由于字符类型的特性决定的:
char定义时用单引号,只能有一个字母,数字,而双引号一般是Strig类型的,有0个或多个字符
改成单引号就可以解决了。
三.Ambiguous method call. Both 二义性方法调用双管齐下
编译时发现标红报错如下图所示:
二义性调用(Ambiguous Call),属于一种编译错误。
在调用函数,去匹配合适的参数列表时,发现当前所提供参数,能匹配出多个重载函数
选中readInitMenuSelection方法,Ctrl+B查看,可以找到方法及调用,重新检验后无误
四. Operator '+' cannot be applied to 'java.lang.String", 'void'
运算符‘+’不能应用于‘java.lang.String’,‘void’
解决方法:一个想要调用另一个的方法,且是字符串的类型的需要将void换成string,并将输出语句换成return就ok啦!
五. 内容指向地址
如图所示,在测试时发现出来第一个前四项可以正常输入,其他的前四项都是错误输出
查看代码
回到类中,发现未重写,使用自动生成toString
第一次修改后:
发现返回的是一个地址而非字符串,于是再次查看,发现是类中引入接口未重写,于是在引入接口的PC、Print、NoteBook类中重写
@Override
public String getDescription() {
return model + "(" + display + ")";
}
@Override
public String toString() {
return model + "(" + display + ")";
}
程序员Programmer类也重写toString方法即可输出该类成员内容:
第二次修改后:
从图上可以看出来修改过后的程序员类前四项可以正常显示了,以此类推修改其他类的重写方法,得到第三次修改结果:
修改一下版排:
经过不懈努力,终于成功写出一个相对好看的版排
新的问题再次出现,怎么能够停滞不前?
新添加的操作打印出来的新成员歪歪是歪的QAQ,但内容都是正常的了