2023年民大22级电信Java 练习6类间双向关联关系的实现-Contact与Phone类

一、

【问题描述】编程实现如图所示的类间关联关系(双向关联)

【输入形式】

输入分4行,

第1行:联系人ID 联系人姓名

第2行:第一个联系电话号码 联系电话类型

第3行:第二个联系电话号码 联系电话类型 

第4行:第三个联系电话号码 联系电话类型
【输出形式】

见样例输出
【样例输入】

123 xiaoyu

87542222 office

87558755 home

1397890678 mobile

【样例输出】

ContactName:xiaoyu PhoneNumber:87542222 type:office

ContactName:xiaoyu PhoneNumber:87558755 type:home

ContactName:xiaoyu PhoneNumber:1397890678 type:mobile

Contact of the second phone:xiaoyu

代码实现:

//Contact.java
package practice_6;

import java.util.ArrayList;

public class Contact {
    //声明属性变量
    private int contactID;
    private String name;
    private boolean isFreqContact;//不知道这个变量要怎么用
    private ArrayList<Phone> phoneArray;

    public Contact(int ID,String name){
        contactID = ID;
        this.name = name;
        phoneArray = new ArrayList<Phone>();//此处Phone可以省略
//动态数组声明方式:
//ArrayList<数组元素类型> 变量名 = new ArrayList<>(int num); 
//num 表示初始长度,可不写
    }
    //重写toString方法
    public String toString(){
        String info,base;
        base = "ContactName:"+name+" "+"PhoneNumber:";
        info = base+phoneArray.get(0).getNum()+" type:"+phoneArray.get(0).getType()+"\n"+
                base+phoneArray.get(1).getNum()+" type:"+phoneArray.get(1).getType()+"\n"+
                base+phoneArray.get(2).getNum()+" type:"+phoneArray.get(2).getType()+"\n"+
                "Contact of the second phone:"+name;
        return info;
    }


    public void addPhone(Phone aPhone) {
        phoneArray.add(aPhone);
    }

}
//Phone.java
package practice_6;

public class Phone {
    private String num;
    private String type;
    private Contact aContact;//将电话与联系人关联
    public Phone(String num,String type){
        this.num = num;
        this.type = type;
    }

    public void setaContact(Contact aContact) {
        this.aContact = aContact;
    }
    //在Contact的toString里要调用电话号码num和类型type,
    //要用get标准方法调用(private变量)

    public String getNum() {
        return num;
    }

    public String getType() {
        return type;
    }

    public Contact getaContact() {
        return aContact;
    }
}
//Test.java
package practice_6;

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner sc =new Scanner(System.in);
        //新联系人
        Contact theContact = new Contact(sc.nextInt(),sc.next());

        for (int i = 0; i < 3; i++) {
            //新电话
            Phone phone = new Phone(sc.next(),sc.next());
            theContact.addPhone(phone);
            //将电话号码与电话所有人关联
            phone.setaContact(theContact);
        }
        //这里隐式调用了toString
        System.out.println(theContact);
    }
}

 输出显示:

123 xiaoyu

87542222 office

87558755 home

1397890678 mobile
ContactName:xiaoyu PhoneNumber:87542222 type:office
ContactName:xiaoyu PhoneNumber:87558755 type:home
ContactName:xiaoyu PhoneNumber:1397890678 type:mobile
Contact of the second phone:xiaoyu

进程已结束,退出代码0

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
以下是Java代码实现: ```java import java.util.ArrayList; class Contact { private int contactId; private String name; private ArrayList<Phone> phoneArray = new ArrayList<Phone>(); public Contact(int contactId, String name) { this.contactId = contactId; this.name = name; } public ArrayList<Phone> getPhones() { return phoneArray; } public void addPhoneToContact(Phone aPhone) { phoneArray.add(aPhone); aPhone.setContact(this); } // getter and setter methods } class Phone { private String name; private String phoneNum; private boolean isFreqContact; private String type; private Contact aContact; public Phone(String name, String phoneNum, String type) { this.name = name; this.phoneNum = phoneNum; this.type = type; } public void setContact(Contact aContact) { this.aContact = aContact; } // getter and setter methods } public class Main { public static void main(String[] args) { // 读入联系人信息 String[] contactInfo = new String[2]; Scanner sc = new Scanner(System.in); for (int i = 0; i < 2; i++) { contactInfo[i] = sc.nextLine(); } Contact aContact = new Contact(Integer.parseInt(contactInfo[0]), contactInfo[1]); // 读入电话信息 for (int i = 0; i < 3; i++) { String[] phoneInfo = sc.nextLine().split(" "); Phone aPhone = new Phone(phoneInfo[0], phoneInfo[1], phoneInfo[2]); aContact.addPhoneToContact(aPhone); } // 输出联系人的电话信息 ArrayList<Phone> phones = aContact.getPhones(); for (Phone phone : phones) { System.out.println(phone.getName() + " " + phone.getPhoneNum() + " " + phone.getType()); } } } ``` 输入样例: ``` 123 John 12345678901 mobile 98765432109 home 13579246810 work ``` 输出样例: ``` 12345678901 mobile 98765432109 home 13579246810 work ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Qiming_Peng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值