本帖最后由 winnerway 于 2011-04-12 19:48:23 编辑

解决方案 »

  1.   

    ls说的很对,lz你这个问题还是得自己写,自己不写什么都学不到的,你可以自己先试着写写,其中如果遇到了什么问题,自己不能理解的可以拿出来我们一起讨论讨论,不要一味的只求结果!
      

  2.   


    public class Person {
        private String name; 
        private int age; 
        private boolean gender;
        private boolean state;    Person(String a, int a1, boolean a2, boolean a3) {
            this.name=a;
            this.age=a1;
            
        }    public int getAge() {
            return age;
        }    public void setAge(int age) {
            this.age = age;
        }    public boolean isGender() {
            return gender;
        }    public void setGender(boolean gender) {
            this.gender = gender;
        }    public String getName() {
            return name;
        }    public void setName(String name) {
            this.name = name;
        }    public boolean isState() {
            return state;
        }    public void setState(boolean state) {
            this.state = state;
        }
        
        public String Marry(Person a,Person b)
        {
            String returninfo = "error";
            
            if(a.state||b.state)
            {
                returninfo="不能结婚,有人已婚";
            }
            else
            {
                if(a.gender!=b.gender)
                {
                    if(a.age>=22||b.age>=20)
                    {
                        returninfo="恭喜";
                    }
                    else
                    {
                        returninfo="不能结婚,年龄不符合规定";
                    }
                }
                else
                {
                    returninfo="不能结婚,同性";
                }
            }
            return returninfo;
        }}
      

  3.   


    public class x{}
      

  4.   


    import java.util.Calendar;
    public class Person {
    private String name;// 姓名
    private Calendar birthday;// 生日
    private boolean gender;// true代表男,false代表女
    private Person partner;//配偶 // 无参构造函数
    public Person() {
    } // 带参构造函数
    public Person(String name, Calendar birthday, boolean gender) {
    this.name = name;
    this.birthday = birthday;
    this.gender = gender;
    } // 带参构造函数
    public Person(String name, Calendar birthday, boolean gender, Person partner) {
    this.name = name;
    this.birthday = birthday;
    this.gender = gender;
    this.partner = partner;
    } // 结婚方法
    public void marry(Person p) {
    boolean flag = true;
    //判断是否有配偶
    if (p.partner == null && this.partner == null) {
    // 判断是否同性
    if (this.gender == p.gender) {
    System.out.println("同性不能结婚!");
    flag = false;
    }
    // 判读是否为男性
    if (this.gender || p.gender) {
    if (this.gender && getAge(this.birthday) < 22 || p.gender
    && getAge(p.birthday) < 22) {
    System.out.println("男性法定结婚年龄必须是满22周岁哦!");
    flag = false;
    }
    } else {// 判读是否为女性
    if (!this.gender && getAge(this.birthday) < 20 || !p.gender
    && getAge(p.birthday) < 20) {
    System.out.println("女性法定结婚年龄必须是满20周岁哦!");
    flag = false;
    }
    }
    } else {
    System.out.println("不能结婚,一方已婚!");
    flag = false;
    }
    if (flag) {
    System.out.println("你们可以结婚哦!");
    }
    } /**
     * 根据出生日期计算年龄
     * 
     * @param birthDay
     * @return 未来日期返回0
     * @throws Exception
     */
    public static int getAge(Calendar birthDay) { Calendar cal = Calendar.getInstance();
            //如果生日超过了当前日期,就返回0
    if (cal.before(birthDay)) {
    return 0;
    }
    //获得当前日期的年月日
    int yearNow = cal.get(Calendar.YEAR);
    int monthNow = cal.get(Calendar.MONTH);
    int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH);
    //获得生日的年月日
    cal.setTime(birthDay.getTime());
    int yearBirth = cal.get(Calendar.YEAR);
    int monthBirth = cal.get(Calendar.MONTH);
    int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH);
    int age = yearNow - yearBirth; if (monthNow <= monthBirth) {
    if (monthNow == monthBirth) {
    if (dayOfMonthNow < dayOfMonthBirth) {
    age--;
    }
    } else {
    age--;
    }
    }
    return age;
    } public static void main(String[] args) {
    Calendar c = Calendar.getInstance();
    c.set(1987, 4, 5);
    Person p1 = new Person("张三", c, true);
    Calendar c1 = Calendar.getInstance();
    c1.set(1990, 8, 5);
    Person p2 = new Person("小晶", c1, false);
    p1.marry(p2);
    }}
      

  5.   

    修正一下:package com.anxin.utils;import java.util.Calendar;
    public class Person {
    private String name;// 姓名
    private Calendar birthday;// 生日
    private boolean gender;// true代表男,false代表女
    private Person partner;//配偶 // 无参构造函数
    public Person() {
    } // 带参构造函数
    public Person(String name, Calendar birthday, boolean gender) {
    this.name = name;
    this.birthday = birthday;
    this.gender = gender;
    } // 带参构造函数
    public Person(String name, Calendar birthday, boolean gender, Person partner) {
    this.name = name;
    this.birthday = birthday;
    this.gender = gender;
    this.partner = partner;
    } // 结婚方法
    public void marry(Person p) {
    boolean flag = true;
    //判断是否有配偶
    if (p.partner == null && this.partner == null) {
    // 判断是否同性
    if (this.gender == p.gender) {
    System.out.println("同性不能结婚!");
    flag = false;
    }
    // 判读是否为男性
    if (this.gender || p.gender) {
    if (this.gender && getAge(this.birthday) < 22 || p.gender
    && getAge(p.birthday) < 22) {
    System.out.println("男性法定结婚年龄必须是满22周岁哦!");
    flag = false;
    }
    } else {// 判读是否为女性
    if (!this.gender && getAge(this.birthday) < 20 || !p.gender
    && getAge(p.birthday) < 20) {
    System.out.println("女性法定结婚年龄必须是满20周岁哦!");
    flag = false;
    }
    }
    } else {
    System.out.println("不能结婚,一方已婚!");
    flag = false;
    }
    if (flag) {
    System.out.println("你们可以结婚哦!");
    }
    } /**
     * 根据出生日期计算年龄
     * 
     * @param birthDay
     * @return 未来日期返回0
     * @throws Exception
     */
    public static int getAge(Calendar birthDay) { Calendar cal = Calendar.getInstance();
            //如果生日超过了当前日期,就返回0
    if (cal.before(birthDay)) {
    return 0;
    }
    //获得当前日期的年月日
    int yearNow = cal.get(Calendar.YEAR);
    int monthNow = cal.get(Calendar.MONTH)+1;
    int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH)+1;
    //获得生日的年月日
    cal.setTime(birthDay.getTime());
    int yearBirth = cal.get(Calendar.YEAR);
    int monthBirth = cal.get(Calendar.MONTH);
    int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH);
    int age = yearNow - yearBirth; if (monthNow <= monthBirth) {
    if (monthNow == monthBirth) {
    if (dayOfMonthNow < dayOfMonthBirth) {
    age--;
    }
    } else {
    age--;
    }
    }
    return age;
    }
        
    public static void main(String[] args) {
    Calendar c = Calendar.getInstance();
    c.set(1987, 4, 5);
    Person p1 = new Person("张三", c, true);
    Calendar c1 = Calendar.getInstance();
    c1.set(1990, 8, 5);
    Person p2 = new Person("小晶", c1, false);
    p1.marry(p2);
    }}
      

  6.   

    [Quote=引用 22 楼 zxingchao2009 的回复:]public Person(String name, Calendar birthday, boolean gender) {
            this.name = name;
            this.birthday = birthday;
            this.gender = gender;
        }    // 带参构造函数
        public Person(String name, Calendar birthday, boolean gender, Person partner) {
            this.name = name;
            this.birthday = birthday;
            this.gender = gender;
            this.partner = partner;
    这两个构造方法有什么区别啊 
     Person p1 = new Person("张三", c, true);
      

  7.   


    你那个Person类中partner不是配偶吗,如果没有配偶的的就用
    public Person(String name, Calendar birthday, boolean gender) {
      this.name = name;
      this.birthday = birthday;
      this.gender = gender;
      }
    这个构造函数,有配偶的就用另外一个
      

  8.   

    或者干脆就只用第二个好了,如果没有配偶的直接用Null就行了
    Calendar c = Calendar.getInstance();
            c.set(1987, 4, 5);
            Person p1 = new Person("张三", c, true,null);
            Calendar c1 = Calendar.getInstance();
            c1.set(1990, 8, 5);
            Person p2 = new Person("小晶", c1, false,null);
            p1.marry(p2);