遇到的问题及解决方法

本文介绍了Java编程中遇到的几种典型错误:类型转换失败、单引号双引号的误用、方法调用二义性以及运算符错误。通过实例解析了错误原因并提供了相应的解决方案。此外,还讨论了内容输出时的格式问题,强调了重写toString方法的重要性,以确保正确显示类的成员内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.不可转换类型“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,但内容都是正常的了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值