public class Person{
private String name;
private int age;
private boolean gender;
private Person partner ;//
Person(String name,int age,boolean gender){
this.name=name;
this.age=age;
this.gender=gender;
}
public void marry(Person other){
if( other==null ){
System.out.println(this.name+"结婚对象不能为空");
return ;
}
if( this==other){
System.out.println(this.name+"结婚对象不能为自己");
return ;
}
if( this.gender==other.gender){//私有属性不能在外部类里面访问,但是能够在一个类的不同对象中访问,other是Person类的另外一个对象,和this属于一个类
System.out.println(this.name+"结婚对象不能为同性");
return ;
}
if( this.partner!=null){
System.out.println("注意将构成重婚罪!");
return ;
}
if( other.partner!=null){
System.out.println("注意将构成重婚罪!");
return ;
}
if( rule( this ) && rule( other)){
System.out.println(this.name+"和"+other.name+"结婚成功!");
this.partner=other;
other.partner=this;
return ;
}else{
System.out.println("结婚失败!");
return ;
}
}
// 离婚: 1、自己的配偶是对方,对方的配偶是自己才能够离婚 2、离婚对象不能为空
public void divorce(Person p){
if( p==null){
System.out.println(this.name+",别闹!离婚对象为空,怎么离?");
return ;
}
if(rule1( this,p)){
System.out.println(this.name+"和"+p.name+"离婚成功!");
this.partner=null;
p.partner=null;
return ;
}
}
private boolean rule1(Person p1,Person p2){
if(p1.partner==p2 && p2.partner==p1){
return true;
}
if(p1.partner!=p2 ){
System.out.println(p1.name+":别闹!要离婚,请找自己的配偶!");
return false;
}
if(p2.partner!=p1){
System.out.println(p2.name+":别闹!要离婚,请找自己的配偶!");
return false;
}
return false;
}
private boolean rule(Person p){
if(p.gender==true && p.age<24){
System.out.println("男士年龄小于24周岁!");
return false;
}
if(p.gender==false && p.age<22){
System.out.println("女士年龄小于22周岁!");
return false;
}
return true;
}
}
以上是Person类的定义,接着在Testb.java中实现调用,没有让用户从键盘输入,直接就在测试类中直接指定了
public class Testb{
public static void main(String[] args){
Person p=new Person("莘月",22,false);
Person p2=new Person("九爷",28,true);
Person p3=new Person("卫无忌",26,true);
p.marry( p2);
p3.divorce( p);
Person p4=new Person("沈凝",26,false);
Person p5=new Person("江以平",30,true);
p4.marry( p5);
p5.divorce( p4);
}
}