java初学者遇到的解决不了的问题,求大神指教!
创建两个类Student和Score,其中Score实体中的属性学号(Id)来自于Student中的属性学号(StuId),所以在定义Score中的学号时它的数据类型应写...
创建两个类Student和Score,其中Score实体中的属性学号(Id)来自于Student中的属性学号(StuId),
所以在定义Score中的学号时它的数据类型应写成Student;然后在Score类中定义有参和无
参的构造方法,但Score的有参构造方法的参数学号的数据类型是Student类型,当我们
实际new的时候需要向构造方法中传递学号的时候该如何传?通过score.getId().getStuId()虽然
能获得学号但是int类型,与构造函数的数据类型不符,但如果传score.getId()获取的虽然是Student
对象但获取不了真正的学号,这种问题该如何解决? 展开
所以在定义Score中的学号时它的数据类型应写成Student;然后在Score类中定义有参和无
参的构造方法,但Score的有参构造方法的参数学号的数据类型是Student类型,当我们
实际new的时候需要向构造方法中传递学号的时候该如何传?通过score.getId().getStuId()虽然
能获得学号但是int类型,与构造函数的数据类型不符,但如果传score.getId()获取的虽然是Student
对象但获取不了真正的学号,这种问题该如何解决? 展开
3个回答
2015-10-09
展开全部
其实你就不应该把学号定义为Student类型
你应该定义成int类型或者long
但更推荐在Score类中添加Student属性
通过score.getStudent().getStuId()获取学号
不过,你在调用有参构造的时候,必须传入Student对象,而不只是传入学号
public class Student {
private int stuId;
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getStuId() {
return stuId;
}
public void setStuId(int stuId) {
this.stuId = stuId;
}
}
public class Score {
private Student student;
private double score;
public Score(Student student, double score) {
this.student = student;
this.score = score;
}
public Score() {
}
public Student getStudent() {
return student;
}
public void setStudent(Student student) {
this.student = student;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
}
追问
谢谢,我之前没说清楚,我new Score的有参构造方法是为了向数据库的score表添加内容,如果score的构造参数的的一个参数是Student类型,我根本就加不了东西(因为数据库的id列是int类型,而我用Score.getId().getStuId()也不行),其实我也可以把学号改成int类型,但这样Score和Student就没关联了,所以好纠结
追答
常理来说,stuId是Score表的外键吧
Score.getId().getStuId()应该没问题的啊
会不会是你的Score.getId().getStuId()的值,是Student表里面没有的
导致外键无法匹配,从而无法添加信息
展开全部
你好!你的提问,只有阿尔伯特·爱因斯坦的哥哥阿尔伯特·爱因斯塔才能帮你解决。我也是爱莫能助啊。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
二楼答案提供了一种解决方法;
还可以在Score类使用:
int StuId =this.Student.getStuId();
还可以在Score类使用:
int StuId =this.Student.getStuId();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询