用java编译以下问题:编写一个Person类,定义人的基本属性:name(姓名)、age(年龄)、gender(性别)、partner(配偶)。 要求至少为Person类写一个marry(Person p)方法,来判断两个人是否可以结婚。如果可以结婚,将其partner属性赋值为其配偶。 结婚必须满足以下3个条件。 必须是异性,同性不允许结婚。 有配偶者不能结婚。 要达到年龄方可结婚:男方23岁以上,女性21岁以上,person对象要自定义输入
时间: 2024-03-21 22:44:01 浏览: 29
好的,以下是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 String getName() {
return name;
}
public int getAge() {
return age;
}
public String getGender() {
return gender;
}
public Person getPartner() {
return partner;
}
public void setPartner(Person partner) {
this.partner = partner;
}
public boolean isMarried() {
return partner != null;
}
public boolean canMarry(Person p) {
return !isMarried() && !p.isMarried() && !gender.equals(p.getGender())
&& ((gender.equals("male") && age >= 23 && p.getAge() >= 21)
|| (gender.equals("female") && age >= 21 && p.getAge() >= 23));
}
public void marry(Person p) {
if (canMarry(p)) {
this.partner = p;
p.setPartner(this);
System.out.println(this.name + " and " + p.getName() + " are now married.");
} else {
System.out.println(this.name + " and " + p.getName() + " cannot get married.");
}
}
}
```
其中,`Person`类有姓名、年龄、性别、配偶四个属性,以及构造方法、获取属性值的方法、是否已婚、是否可以结婚、结婚方法等。
在`canMarry`方法中,通过对比两个人的性别、婚姻状态和年龄,判断是否可以结婚。
在`marry`方法中,如果可以结婚,将两个人的`partner`属性互相赋值,并打印出结婚成功的信息。否则,打印出结婚失败的信息。
你可以使用以下测试代码来验证`Person`类的功能:
```java
public class TestPerson {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter the first person's name:");
String name1 = scanner.nextLine();
System.out.println("Enter the first person's age:");
int age1 = scanner.nextInt();
scanner.nextLine(); // consume the newline character
System.out.println("Enter the first person's gender:");
String gender1 = scanner.nextLine();
Person person1 = new Person(name1, age1, gender1);
System.out.println("Enter the second person's name:");
String name2 = scanner.nextLine();
System.out.println("Enter the second person's age:");
int age2 = scanner.nextInt();
scanner.nextLine(); // consume the newline character
System.out.println("Enter the second person's gender:");
String gender2 = scanner.nextLine();
Person person2 = new Person(name2, age2, gender2);
person1.marry(person2);
}
}
```
在运行测试代码时,输入两个人的姓名、年龄和性别,程序会根据输入判断两个人是否可以结婚,并输出结婚成功或失败的信息。
相关推荐
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)