class Student extends Person{
private String school;
public Student(String name,String location,String school) {
super(name,location);
this.school = school;
}
public String toString() {
return super.toString() + ",school:" + school;
}
public boolean equals(Object obj) {
if(obj == null) return false;
else if(obj instanceof Student) {
Student s = (Student)obj;
if(s.name == this.name && s.location == this.location && s.school == this.school)
return true;
}
else {return false;}
}
}
提示在倒数第二行处缺少返回值,但是把倒数第三行else删掉的话又能编译。
为什么Java编译时提示缺少返回值?
答案:3 悬赏:10 手机版
解决时间 2021-03-05 03:15
- 提问者网友:寂寞撕碎了回忆
- 2021-03-04 09:02
最佳答案
- 五星知识达人网友:狂恋
- 2021-03-04 09:28
如果你这一个ifif(s.name == this.name && s.location == this.location && s.school == this.school)
return true;没有通过的话 那这个else if(obj instanceof Student) {
Student s = (Student)obj;
if(s.name == this.name && s.location == this.location && s.school == this.school)
return true;
}里面就没有返回值 而你在equals方法结尾也没有给返回值 所以就出现了你说的这用情况
return true;没有通过的话 那这个else if(obj instanceof Student) {
Student s = (Student)obj;
if(s.name == this.name && s.location == this.location && s.school == this.school)
return true;
}里面就没有返回值 而你在equals方法结尾也没有给返回值 所以就出现了你说的这用情况
全部回答
- 1楼网友:蓝房子
- 2021-03-04 10:37
逻辑错了,倒数第二个if,里面还有一个return,如:
if(s.name == this.name && s.location == this.location && s.school == this.school)
return true; return true;
- 2楼网友:杯酒困英雄
- 2021-03-04 10:22
你的两个返回语句都写在了if里,系统判断不出你这两个if是互斥的,它觉得万一你两个if都不成立,就不会有返回值,所以编译不通过。有两种方式:
1. 在return false;后面加一个return false;表示如果上面两个都不成立,返回false,这种写法虽然笨,但是很多实际开发都是这样做的,只不过两个if不是互斥的
2. 把两个if写成一个:if(x==true)xxx else xxxx;
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯