用java编译以下问题:编写一个Person类,定义人的基本属性:name(姓名)、age(年龄)、gender(性别)、partner(配偶)。 要求至少为Person类写一个marry(Person p)方法,来判断两个人是否可以结婚。如果可以结婚,将其partner属性赋值为其配偶。 结婚必须满足以下3个条件。 必须是异性,同性不允许结婚。 有配偶者不能结婚。 要达到年龄方可结婚:男方23岁以上,女性21岁以上
时间: 2024-04-03 22:32:43 浏览: 107
以下是Java代码:
```java
public class Person {
private String name;
private int age;
private String gender;
private Person partner;
public Person(String name, int age, String gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
public void marry(Person p) {
if (this.gender.equals(p.gender)) {
System.out.println("同性不允许结婚!");
return;
}
if (this.partner != null || p.partner != null) {
System.out.println("有配偶者不能结婚!");
return;
}
if ((this.gender.equals("男") && this.age < 23) || (this.gender.equals("女") && this.age < 21) || (p.gender.equals("男") && p.age < 23) || (p.gender.equals("女") && p.age < 21)) {
System.out.println("未达到结婚年龄要求!");
return;
}
this.partner = p;
p.partner = this;
System.out.println(this.name + "和" + p.name + "结婚了!");
}
public static void main(String[] args) {
Person p1 = new Person("Tom", 25, "男");
Person p2 = new Person("Lucy", 22, "女");
p1.marry(p2);
}
}
```
在本例中,我们创建了一个名为Person的类,它具有name、age、gender和partner属性。我们还编写了一个marry方法来判断两个人是否可以结婚,并将其partner属性赋值为其配偶。
在marry方法中,我们首先检查两个人是否为同性,如果是,则输出“同性不允许结婚”,并返回。接下来,我们检查两个人是否已有配偶,如果是,则输出“有配偶者不能结婚”,并返回。最后,我们检查两个人是否达到结婚年龄要求,如果不是,则输出“未达到结婚年龄要求”,并返回。如果所有条件都满足,我们将两个人的partner属性设置为对方,并输出“XXX和XXX结婚了!”。
在main方法中,我们创建了两个Person对象,分别表示Tom和Lucy。然后,我们调用Tom的marry方法,并将Lucy作为参数传递进去。由于Tom和Lucy都满足结婚条件,所以输出“Tom和Lucy结婚了!”。
阅读全文