利益熏心的我写的一个Baidu知道的东西。。- -||
写一个类Person,包含以下属性:String name; int age; boolean gender;Person partner。为Person类写一个marry(Person p)方法,代表当前对象和p结婚,如若可以结婚,则输出恭贺信息,否则输出不能结婚原因。要求在另外一个类中写一个主方法,来测试以上程序。(下列情况不能结婚:1,同性;2,未达到结婚年龄,男<24,女<22;3,某一方已婚)
接受构造角色,可以查看角色列表,从列表中选2人结婚
person类代码:
- package test_1_3;
- import java.io.BufferedReader;
- import java.io.InputStreamReader;
- import java.io.*;
- public class Person {
- public String name;
- public int age;
- public boolean gender;//性别 true=男 false=女
- public Person partner=null;//是否已婚
- public Person(BufferedReader br) {
- this.inIt(br);
- }
- /**
- * 构造角色
- * @param br BufferedReader
- */
- public void inIt(BufferedReader br){
- try {
- System.out.print("你的名字是? ");
- name = br.readLine();
- System.out.print("你的年龄是? ");
- String tempAge=null;
- boolean ok=false;
- while (!ok) {
- ok = true;
- tempAge = br.readLine();
- for (int i = 0; i < tempAge.length(); ++i) {
- if (!(tempAge.charAt(i) >= 48 && tempAge.charAt(i) <= 57)) {
- System.out.print("请输入数字! ");
- ok = false;
- break;
- }
- }
- if (ok) {
- age = Integer.parseInt(tempAge);
- }
- }
- System.out.print("你的性别是?(输入0为男性,1为女性) ");
- String tempGender=null;
- ok=false;
- while(!ok){
- tempGender = br.readLine();
- if (tempGender.equals("0")) {
- gender = true;
- ok=true;
- } else if (tempGender.equals("1")) {
- gender = false;
- ok=true;
- } else {
- System.out.println("请正确输入! ");
- ok=false;
- }
- }
- } catch (IOException ex) {
- ex.printStackTrace();
- }
- System.out.println("-----------------------------------------------------");
- System.out.print("你的名字是:");
- System.out.println(name);
- System.out.print("你的年龄是:");
- System.out.println(age);
- System.out.print("你的性别是:");
- if(gender)
- System.out.println("男");
- else
- System.out.println("女");
- System.out.println("默认你还没有结婚!");
- }
- /**
- * 和某人结婚(互相)
- * @param p Person
- */
- public void marry(Person p){
- this.partner=p;
- p.partner=this;
- System.out.println("恭喜"+name+"和"+p.name+"喜结良缘!");
- }
- /**
- * 是否已婚
- * @return boolean
- */
- protected boolean isMarryAble(){
- if(partner==null){
- return true;
- }else
- System.out.println(name+"已经和"+partner.name+"结婚了!先离婚了吧!");
- return false;
- }
- /**
- * 是否到年龄
- * @return boolean
- */
- protected boolean is18Able(){
- if(gender){
- if(age>=24)
- return true;
- else
- System.out.println(name+"未满24岁结婚不能!");
- }else
- {
- if(age>=22)
- return true;
- else
- System.out.println(name+"未满22岁结婚不能!");
- }
- return false;
- }
- /**
- * 是否是断背山
- * @param p Person
- * @return boolean
- */
- protected boolean isSexAble(Person p){
- if(gender&&p.gender){
- System.out.println("俩男断背山会受到中国道德的谴责!");
- return false;
- }else
- if(!gender&&!p.gender){
- System.out.println("俩女断背山会受到中国道德的谴责!");
- return false;
- }
- return true;
- }
- }
主类代码:
- package test_1_3;
- import java.util.Vector;
- import java.io.InputStreamReader;
- import java.io.BufferedReader;
- import java.io.*;
- public class Test_Main {
- static Vector v=new Vector();
- static char key;
- static boolean play=false;
- static int state;
- static String name;
- public static void main(String args[]) {
- System.out.println("==============模拟人生==============");
- try {
- BufferedReader b = new BufferedReader(new InputStreamReader(System.in));
- while (true) {
- state=0;
- System.out.println("-------------主界面-------------");
- System.out.println("输入E(edit)回车:进入编辑角色界面");
- System.out.println("输入M(Marry)回车:进入结婚界面");
- System.out.println("输入Q(quit)回车:退出程序");
- key = b.readLine().charAt(0);
- switch(key){
- case 'E':
- case 'e':
- state=1;
- play=true;
- break;
- case 'M':
- case 'm':
- state=2;
- play=true;
- break;
- case 'Q':
- case 'q':
- System.out.println("Byebye!");
- b.close();
- return;
- default:
- System.out.println("正确输入吧!");
- }
- switch (state) {
- case 1:
- while(play){
- System.out.println("------------------角色编辑界面-------------------");
- System.out.println("输入S(see)回车:查看角色列表");
- System.out.println("输入C(create)回车:创建角色");
- System.out.println("输入B(back)回车:返回主界面");
- key = b.readLine().charAt(0);
- switch (key) {
- case 'S':
- case 's':
- if (v.isEmpty())
- System.out.println("当前没有角色!");
- else {
- System.out.println("当前共有" + v.size() +"名角色!");
- for (int i = 0; i < v.size(); ++i) {
- System.out.println("NO." + i +"--------------------------------------------");
- System.out.println("姓名:" +((Person) v.elementAt(i)).name);
- if (((Person) v.elementAt(i)).gender)
- System.out.println("性别:男");
- else
- System.out.println("性别:女");
- System.out.println("年龄:" +((Person) v.elementAt(i)).age);
- if (((Person) v.elementAt(i)).partner == null)
- System.out.println("未婚");
- else {
- System.out.println("伴侣:" +((Person) v.elementAt(i)).partner.name);
- }
- }
- }
- break;
- case 'C':
- case 'c':
- Person person=new Person(b);
- v.addElement(person);
- break;
- case 'B':
- case 'b':
- play = false;
- break;
- default:
- System.out.println("正确输入吧!");
- }
- }
- break;
- case 2:
- while(play){
- System.out.println("-------------------配偶界面---------------------");
- System.out.println("输入M(marry)回车:选人结婚");
- System.out.println("输入B(back)回车:返回主界面");
- key = b.readLine().charAt(0);
- switch (key) {
- case 'M':
- case 'm':
- Person p1=null,p2=null;
- System.out.print("输入要结婚的人物A的姓名:");
- name=b.readLine();
- if(!v.isEmpty()){
- for(int i=0;i<v.size();++i){
- if(name.equals(((Person)v.elementAt(i)).name)){
- p1=(Person)v.elementAt(i);
- break;
- }
- }
- }
- if(p1==null)
- System.out.println("查无此人!"+name);
- else{
- System.out.print("输入要结婚的人物B的姓名:");
- name=b.readLine();
- if (!v.isEmpty()) {
- for (int i = 0; i < v.size(); ++i) {
- if (name.equals(((Person) v.elementAt(i)).name)) {
- p2 = (Person) v.elementAt(i);
- break;
- }
- }
- }
- if(p2==null)
- System.out.println("查无此人!"+name);
- else{
- System.out.println("-----------------开始相亲------------------");
- if(p1.isSexAble(p2)&&p1.is18Able()&&p2.is18Able()&&p1.isMarryAble()&&p2.isMarryAble()){
- p1.marry(p2);
- }
- }
- }
- break;
- case 'B':
- case 'b':
- play = false;
- break;
- default:
- System.out.println("正确输入吧!");
- }
- }
- break;
- }
- }
- } catch (IOException ex) {
- ex.printStackTrace();
- }
- }
- }