上述代码中c1.display出现的内容为null或者0

时间: 2024-04-14 15:28:23 浏览: 24
感谢你提供的信息。根据你所说的情况,如果在执行 `c1.display()` 后显示的内容为 "null" 或者 "0",可能是因为在 `c1` 对象中没有正确保存 `s001` 的值或者 `display()` 方法没有正确实现。 请确保在创建 `c1` 对象时将 `s001` 的值正确保存到 `c1` 中。例如: ```python class C1: def __init__(self, value): self.data = value def display(self): print(self.data) s001 = "Hello, World!" c1 = C1(s001) c1.display() ``` 这样,当调用 `c1.display()` 时,应该会正确地打印出 "Hello, World!"。 如果问题仍然存在,请提供更多的代码细节,以便我能够更好地理解问题并提供准确的解答。谢谢!
相关问题

请根据代码片段仿写实现div左下角拖拽移动用具体代码实现,import Vue from 'vue' Vue.directive('dialogZoomOut', { bind(el, binding, vnode, oldVnode) { let minWidth = 400;let minHeight = 300;let isFullScreen = false; let nowWidth = 0;let nowHight = 0;let nowMarginTop = 0;const dialogHeaderEl = el.querySelector('.el-dialog__header');const dragDom = el.querySelector('.el-dialog');dragDom.style.overflow = "auto";dialogHeaderEl.onselectstart = new Function("return false");dialogHeaderEl.style.cursor = 'move';const sty = dragDom.currentStyle || window.getComputedStyle(dragDom, null);let moveDown = (e) => {const disX = e.clientX - dialogHeaderEl.offsetLeft;const disY = e.clientY - dialogHeaderEl.offsetTop;let styL, styT;if (sty.left.includes('%')) {styL = +document.body.clientWidth * (+sty.left.replace(/%/g, '') / 100);styT = +document.body.clientHeight * (+sty.top.replace(/%/g, '') / 100);} else {styL = +sty.left.replace(/px/g, '');styT = +sty.top.replace(/px/g, '');};document.onmousemove = function (e) {const l = e.clientX - disX;const t = e.clientY - disY;dragDom.style.left = `${l + styL}px`;dragDom.style.top = `${t + styT}px`;};document.onmouseup = function (e) {document.onmousemove = null;document.onmouseup = null;};}dialogHeaderEl.onmousedown = moveDown;dialogHeaderEl.ondblclick = (e) => {if (isFullScreen == false) {nowHight = dragDom.clientHeight;nowWidth = dragDom.clientWidth;nowMarginTop = dragDom.style.marginTop;dragDom.style.left = 0;dragDom.style.top = 0;dragDom.style.height = "100VH";dragDom.style.width = "100VW";dragDom.style.marginTop = 0;isFullScreen = true;dialogHeaderEl.style.cursor = 'initial';dialogHeaderEl.onmousedown = null;} else {dragDom.style.height = "auto";dragDom.style.width = nowWidth + 'px';dragDom.style.marginTop = nowMarginTop;isFullScreen = false;dialogHeaderEl.style.cursor = 'move';dialogHeaderEl.onmousedown = moveDown;}}let resizeEl = document.createElement("div");dragDom.appendChild(resizeEl);resizeEl.style.cursor = 'se-resize';resizeEl.style.position = 'absolute';resizeEl.style.height = '10px';resizeEl.style.width = '10px';resizeEl.style.right = '0px';resizeEl.style.bottom = '0px';resizeEl.style.zIndex = '99';resizeEl.onmousedown = (e) => {let clientX = e.clientX;let disX = e.clientX - resizeEl.offsetLeft;let disY = e.clientY - resizeEl.offsetTop;document.onmousemove = function (e) {e.preventDefault(); let x = e.clientX - disX + (e.clientX - clientX);let y = e.clientY - disY;dragDom.style.width = x > minWidth ? `${x}px` : minWidth + 'px';dragDom.style.height = y > minHeight ? `${y}px` : minHeight + 'px';};document.onmouseup = function (e) {document.onmousemove = null;document.onmouseup = null;};}}})

以下是仿写的代码实现: ```html <template> <div class="dialog-wrapper" v-dialog-zoom-out> <div class="el-dialog"> <div class="el-dialog__header">Dialog Title</div> <div class="el-dialog__body">Dialog Content</div> <div class="el-dialog__footer"> <button @click="$emit('close')">Close</button> </div> <div class="el-dialog__resize"></div> </div> </div> </template> <script> export default { name: "Dialog", }; </script> <style> .dialog-wrapper { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } .el-dialog { position: absolute; top: 0; left: 0; overflow: auto; max-height: 80vh; background-color: #fff; border-radius: 4px; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); } .el-dialog__header { padding: 16px; background-color: #f5f7fa; border-top-left-radius: 4px; border-top-right-radius: 4px; cursor: move; } .el-dialog__body { padding: 16px; } .el-dialog__footer { display: flex; justify-content: flex-end; padding: 16px; background-color: #f5f7fa; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; } .el-dialog__footer button { padding: 8px 16px; background-color: #fff; border: 1px solid #c1c1c1; border-radius: 4px; cursor: pointer; } .el-dialog__resize { position: absolute; bottom: 0; right: 0; width: 10px; height: 10px; cursor: se-resize; background-color: #c1c1c1; } </style> ``` ```javascript import Vue from "vue"; Vue.directive("dialogZoomOut", { bind(el, binding, vnode, oldVnode) { let minWidth = 400; let minHeight = 300; let isFullScreen = false; let nowWidth = 0; let nowHight = 0; let nowMarginTop = 0; const dialogHeaderEl = el.querySelector(".el-dialog__header"); const dragDom = el.querySelector(".el-dialog"); dragDom.style.overflow = "auto"; dialogHeaderEl.onselectstart = new Function("return false"); dialogHeaderEl.style.cursor = "move"; const sty = dragDom.currentStyle || window.getComputedStyle(dragDom, null); let moveDown = (e) => { const disX = e.clientX - dialogHeaderEl.offsetLeft; const disY = e.clientY - dialogHeaderEl.offsetTop; let styL, styT; if (sty.left.includes("%")) { styL = +document.body.clientWidth * (+sty.left.replace(/%/g, "") / 100); styT = +document.body.clientHeight * (+sty.top.replace(/%/g, "") / 100); } else { styL = +sty.left.replace(/px/g, ""); styT = +sty.top.replace(/px/g, ""); } document.onmousemove = function (e) { const l = e.clientX - disX; const t = e.clientY - disY; dragDom.style.left = `${l + styL}px`; dragDom.style.top = `${t + styT}px`; }; document.onmouseup = function (e) { document.onmousemove = null; document.onmouseup = null; }; }; dialogHeaderEl.onmousedown = moveDown; dialogHeaderEl.ondblclick = (e) => { if (isFullScreen == false) { nowHight = dragDom.clientHeight; nowWidth = dragDom.clientWidth; nowMarginTop = dragDom.style.marginTop; dragDom.style.left = 0; dragDom.style.top = 0; dragDom.style.height = "100VH"; dragDom.style.width = "100VW"; dragDom.style.marginTop = 0; isFullScreen = true; dialogHeaderEl.style.cursor = "initial"; dialogHeaderEl.onmousedown = null; } else { dragDom.style.height = "auto"; dragDom.style.width = nowWidth + "px"; dragDom.style.marginTop = nowMarginTop; isFullScreen = false; dialogHeaderEl.style.cursor = "move"; dialogHeaderEl.onmousedown = moveDown; } }; let resizeEl = document.createElement("div"); dragDom.appendChild(resizeEl); resizeEl.style.cursor = "se-resize"; resizeEl.style.position = "absolute"; resizeEl.style.height = "10px"; resizeEl.style.width = "10px"; resizeEl.style.right = "0px"; resizeEl.style.bottom = "0px"; resizeEl.style.zIndex = "99"; resizeEl.onmousedown = (e) => { let clientX = e.clientX; let disX = e.clientX - resizeEl.offsetLeft; let disY = e.clientY - resizeEl.offsetTop; document.onmousemove = function (e) { e.preventDefault(); let x = e.clientX - disX + (e.clientX - clientX); let y = e.clientY - disY; dragDom.style.width = x > minWidth ? `${x}px` : minWidth + "px"; dragDom.style.height = y > minHeight ? `${y}px` : minHeight + "px"; }; document.onmouseup = function (e) { document.onmousemove = null; document.onmouseup = null; }; }; }, }); ``` 上述代码实现了一个类似于Element UI中的Dialog组件的拖拽和缩放功能。在使用时,只需要将 `v-dialog-zoom-out` 指令绑定到Dialog组件的容器元素上,即可实现拖拽和缩放功能。

目的:理解类的抽象与继承,体会方法重写和重写体现的多态性;综合运用面向对象的编程思想,对下面的问题进行分析,使用Java实现并进行测试。 内容:设计电话薄程序 (1)根据下面的描述设计类层次关系。 1)联系人信息有:姓名、电话、备注; 2)家人信息:还包括地址、固定电话; 3)朋友信息:还包括类别(同学、同事、其他朋友); 4)工作联系人信息:还包括公司、部门、职务。 (2)注意重写toString(),返回每类对象的全部信息 (3) 要求在父类中定义display()方法,此方法中将toString()结果输出值控台 (4)提供添加、删除、修改、查看指定成员、查看所有联系人信息等方法 (5)选做:图形用户界面、网络服务端 (6)使用Comparable或Comparator方法对联系人进行排序 能运行的java程序

以下是一个能够实现上述要求的Java程序,其中涉及到类的抽象与继承、方法重写和重载、多态性、排序等面向对象编程的概念: ```java import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Scanner; abstract class Contact { private String name; private String phone; private String remark; public Contact(String name, String phone, String remark) { this.name = name; this.phone = phone; this.remark = remark; } public abstract String getInfo(); public void display() { System.out.println(getInfo()); } public String toString() { return getInfo(); } public String getName() { return name; } public String getPhone() { return phone; } public String getRemark() { return remark; } } class FamilyContact extends Contact { private String address; private String homePhone; public FamilyContact(String name, String phone, String remark, String address, String homePhone) { super(name, phone, remark); this.address = address; this.homePhone = homePhone; } public String getInfo() { return "家人 - " + getName() + " " + getPhone() + " " + getRemark() + " " + address + " " + homePhone; } } class FriendContact extends Contact { private String category; public FriendContact(String name, String phone, String remark, String category) { super(name, phone, remark); this.category = category; } public String getInfo() { return "朋友 - " + getName() + " " + getPhone() + " " + getRemark() + " " + category; } } class WorkContact extends Contact { private String company; private String department; private String position; public WorkContact(String name, String phone, String remark, String company, String department, String position) { super(name, phone, remark); this.company = company; this.department = department; this.position = position; } public String getInfo() { return "工作联系人 - " + getName() + " " + getPhone() + " " + getRemark() + " " + company + " " + department + " " + position; } } class PhoneBook { private ArrayList<Contact> contacts; public PhoneBook() { contacts = new ArrayList<Contact>(); } public void addContact(Contact contact) { contacts.add(contact); } public void removeContact(Contact contact) { contacts.remove(contact); } public void modifyContact(Contact oldContact, Contact newContact) { int index = contacts.indexOf(oldContact); contacts.set(index, newContact); } public Contact searchContact(String name) { for (Contact contact : contacts) { if (contact.getName().equals(name)) { return contact; } } return null; } public void displayContacts() { for (Contact contact : contacts) { contact.display(); } } public void sortContacts() { Collections.sort(contacts, new Comparator<Contact>() { public int compare(Contact c1, Contact c2) { return c1.getName().compareToIgnoreCase(c2.getName()); } }); } } public class Main { public static void main(String[] args) { PhoneBook phoneBook = new PhoneBook(); Scanner scanner = new Scanner(System.in); while (true) { System.out.println("请输入要进行的操作:1.添加联系人 2.删除联系人 3.修改联系人 4.查找联系人 5.显示所有联系人 6.排序联系人"); int option = scanner.nextInt(); switch (option) { case 1: System.out.println("请输入联系人类型:1.家人 2.朋友 3.工作联系人"); int type = scanner.nextInt(); System.out.println("请输入姓名:"); String name = scanner.next(); System.out.println("请输入电话:"); String phone = scanner.next(); System.out.println("请输入备注:"); String remark = scanner.next(); if (type == 1) { System.out.println("请输入地址:"); String address = scanner.next(); System.out.println("请输入固定电话:"); String homePhone = scanner.next(); FamilyContact familyContact = new FamilyContact(name, phone, remark, address, homePhone); phoneBook.addContact(familyContact); } else if (type == 2) { System.out.println("请输入类别:"); String category = scanner.next(); FriendContact friendContact = new FriendContact(name, phone, remark, category); phoneBook.addContact(friendContact); } else if (type == 3) { System.out.println("请输入公司:"); String company = scanner.next(); System.out.println("请输入部门:"); String department = scanner.next(); System.out.println("请输入职务:"); String position = scanner.next(); WorkContact workContact = new WorkContact(name, phone, remark, company, department, position); phoneBook.addContact(workContact); } break; case 2: System.out.println("请输入要删除的联系人姓名:"); String nameToRemove = scanner.next(); Contact contactToRemove = phoneBook.searchContact(nameToRemove); if (contactToRemove != null) { phoneBook.removeContact(contactToRemove); System.out.println("删除成功!"); } else { System.out.println("联系人不存在!"); } break; case 3: System.out.println("请输入要修改的联系人姓名:"); String nameToModify = scanner.next(); Contact contactToModify = phoneBook.searchContact(nameToModify); if (contactToModify != null) { System.out.println("请输入新的联系人信息:"); int typeToModify = 0; if (contactToModify instanceof FamilyContact) { typeToModify = 1; } else if (contactToModify instanceof FriendContact) { typeToModify = 2; } else if (contactToModify instanceof WorkContact) { typeToModify = 3; } System.out.println("请输入姓名:"); String newName = scanner.next(); System.out.println("请输入电话:"); String newPhone = scanner.next(); System.out.println("请输入备注:"); String newRemark = scanner.next(); if (typeToModify == 1) { System.out.println("请输入地址:"); String newAddress = scanner.next(); System.out.println("请输入固定电话:"); String newHomePhone = scanner.next(); FamilyContact newFamilyContact = new FamilyContact(newName, newPhone, newRemark, newAddress, newHomePhone); phoneBook.modifyContact(contactToModify, newFamilyContact); } else if (typeToModify == 2) { System.out.println("请输入类别:"); String newCategory = scanner.next(); FriendContact newFriendContact = new FriendContact(newName, newPhone, newRemark, newCategory); phoneBook.modifyContact(contactToModify, newFriendContact); } else if (typeToModify == 3) { System.out.println("请输入公司:"); String newCompany = scanner.next(); System.out.println("请输入部门:"); String newDepartment = scanner.next(); System.out.println("请输入职务:"); String newPosition = scanner.next(); WorkContact newWorkContact = new WorkContact(newName, newPhone, newRemark, newCompany, newDepartment, newPosition); phoneBook.modifyContact(contactToModify, newWorkContact); } System.out.println("修改成功!"); } else { System.out.println("联系人不存在!"); } break; case 4: System.out.println("请输入要查找的联系人姓名:"); String nameToSearch = scanner.next(); Contact contactToSearch = phoneBook.searchContact(nameToSearch); if (contactToSearch != null) { contactToSearch.display(); } else { System.out.println("联系人不存在!"); } break; case 5: phoneBook.displayContacts(); break; case 6: phoneBook.sortContacts(); System.out.println("排序成功!"); break; default: System.out.println("输入错误,请重新输入!"); break; } } } } ``` 这个程序实现了添加、删除、修改、查找和显示所有联系人信息的功能,并提供了一个排序联系人的选项。在程序运行时,用户可以根据提示输入相应的操作,然后程序会根据用户输入的内容执行相应的操作。

相关推荐

最新推荐

recommend-type

MySQL中NOT IN填坑之列为null的问题解决

预期的结果是:有多少条数据在 t1 中,同时不在 t2 中,结果为:0,也就是 t1 中数据都在 t2 中,但是很容易就发现某些数据在 t1 中不在 t2 中,所以就感觉很奇怪,这个 SQL 看着也没问题啊。经过一番查询原来是因为...
recommend-type

A7600C1-LNSE硬件设计手册 马维尔芯片设计参考

SIMCom芯讯通A7600C1硬件设计手册 马维尔芯片设计参考 世联芯科技提供原厂技术支持!A7600C1中文资料下载!
recommend-type

A7600C1硬件设计手册规格书

A7600C1内置了多种网络协议,支持多种主流软件 操作系统的驱动(Windows,Linux和Android等操作系 统主流版本的USB驱动)和软件功能。同时也集成了主 流的工业标准接口,具有强大的扩展能力,包括UART、 SDIO、I2C、...
recommend-type

Java静态代码块作用及执行顺序解析

c1.test(); PuTong c2 = new PuTong(); c2.test(); } } 运行输出结果是: 静态代码块!--&gt;非静态代码块!--&gt;默认构造方法!--&gt;普通方法中的代码块! 非静态代码块!--&gt;默认构造方法!--&gt;普通方法中的代码块! ...
recommend-type

C1认证知识总结——计算机通识+Web基础+JS基础+Web进阶

csdn见习工程师认证,适合编程小白,零基础学编程。C1认证知识总结——计算机通识+Web基础+JS基础+Web进阶!!!收藏+加关注+评论1 免费获取
recommend-type

计算机基础知识试题与解答

"计算机基础知识试题及答案-(1).doc" 这篇文档包含了计算机基础知识的多项选择题,涵盖了计算机历史、操作系统、计算机分类、电子器件、计算机系统组成、软件类型、计算机语言、运算速度度量单位、数据存储单位、进制转换以及输入/输出设备等多个方面。 1. 世界上第一台电子数字计算机名为ENIAC(电子数字积分计算器),这是计算机发展史上的一个重要里程碑。 2. 操作系统的作用是控制和管理系统资源的使用,它负责管理计算机硬件和软件资源,提供用户界面,使用户能够高效地使用计算机。 3. 个人计算机(PC)属于微型计算机类别,适合个人使用,具有较高的性价比和灵活性。 4. 当前制造计算机普遍采用的电子器件是超大规模集成电路(VLSI),这使得计算机的处理能力和集成度大大提高。 5. 完整的计算机系统由硬件系统和软件系统两部分组成,硬件包括计算机硬件设备,软件则包括系统软件和应用软件。 6. 计算机软件不仅指计算机程序,还包括相关的文档、数据和程序设计语言。 7. 软件系统通常分为系统软件和应用软件,系统软件如操作系统,应用软件则是用户用于特定任务的软件。 8. 机器语言是计算机可以直接执行的语言,不需要编译,因为它直接对应于硬件指令集。 9. 微机的性能主要由CPU决定,CPU的性能指标包括时钟频率、架构、核心数量等。 10. 运算器是计算机中的一个重要组成部分,主要负责进行算术和逻辑运算。 11. MIPS(Millions of Instructions Per Second)是衡量计算机每秒执行指令数的单位,用于描述计算机的运算速度。 12. 计算机存储数据的最小单位是位(比特,bit),是二进制的基本单位。 13. 一个字节由8个二进制位组成,是计算机中表示基本信息的最小单位。 14. 1MB(兆字节)等于1,048,576字节,这是常见的内存和存储容量单位。 15. 八进制数的范围是0-7,因此317是一个可能的八进制数。 16. 与十进制36.875等值的二进制数是100100.111,其中整数部分36转换为二进制为100100,小数部分0.875转换为二进制为0.111。 17. 逻辑运算中,0+1应该等于1,但选项C错误地给出了0+1=0。 18. 磁盘是一种外存储设备,用于长期存储大量数据,既可读也可写。 这些题目旨在帮助学习者巩固和检验计算机基础知识的理解,涵盖的领域广泛,对于初学者或需要复习基础知识的人来说很有价值。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

【进阶】音频处理基础:使用Librosa

![【进阶】音频处理基础:使用Librosa](https://picx.zhimg.com/80/v2-a39e5c9bff1d920097341591ca8a2dfe_1440w.webp?source=1def8aca) # 2.1 Librosa库的安装和导入 Librosa库是一个用于音频处理的Python库。要安装Librosa库,请在命令行中输入以下命令: ``` pip install librosa ``` 安装完成后,可以通过以下方式导入Librosa库: ```python import librosa ``` 导入Librosa库后,就可以使用其提供的各种函数
recommend-type

设置ansible 开机自启

Ansible是一个强大的自动化运维工具,它可以用来配置和管理服务器。如果你想要在服务器启动时自动运行Ansible任务,通常会涉及到配置服务或守护进程。以下是使用Ansible设置开机自启的基本步骤: 1. **在主机上安装必要的软件**: 首先确保目标服务器上已经安装了Ansible和SSH(因为Ansible通常是通过SSH执行操作的)。如果需要,可以通过包管理器如apt、yum或zypper安装它们。 2. **编写Ansible playbook**: 创建一个YAML格式的playbook,其中包含`service`模块来管理服务。例如,你可以创建一个名为`setu
recommend-type

计算机基础知识试题与解析

"计算机基础知识试题及答案(二).doc" 这篇文档包含了计算机基础知识的多项选择题,涵盖了操作系统、硬件、数据表示、存储器、程序、病毒、计算机分类、语言等多个方面的知识。 1. 计算机系统由硬件系统和软件系统两部分组成,选项C正确。硬件包括计算机及其外部设备,而软件包括系统软件和应用软件。 2. 十六进制1000转换为十进制是4096,因此选项A正确。十六进制的1000相当于1*16^3 = 4096。 3. ENTER键是回车换行键,用于确认输入或换行,选项B正确。 4. DRAM(Dynamic Random Access Memory)是动态随机存取存储器,选项B正确,它需要周期性刷新来保持数据。 5. Bit是二进制位的简称,是计算机中数据的最小单位,选项A正确。 6. 汉字国标码GB2312-80规定每个汉字用两个字节表示,选项B正确。 7. 微机系统的开机顺序通常是先打开外部设备(如显示器、打印机等),再开启主机,选项D正确。 8. 使用高级语言编写的程序称为源程序,需要经过编译或解释才能执行,选项A正确。 9. 微机病毒是指人为设计的、具有破坏性的小程序,通常通过网络传播,选项D正确。 10. 运算器、控制器及内存的总称是CPU(Central Processing Unit),选项A正确。 11. U盘作为外存储器,断电后存储的信息不会丢失,选项A正确。 12. 财务管理软件属于应用软件,是为特定应用而开发的,选项D正确。 13. 计算机网络的最大好处是实现资源共享,选项C正确。 14. 个人计算机属于微机,选项D正确。 15. 微机唯一能直接识别和处理的语言是机器语言,它是计算机硬件可以直接执行的指令集,选项D正确。 16. 断电会丢失原存信息的存储器是半导体RAM(Random Access Memory),选项A正确。 17. 硬盘连同驱动器是一种外存储器,用于长期存储大量数据,选项B正确。 18. 在内存中,每个基本单位的唯一序号称为地址,选项B正确。 以上是对文档部分内容的详细解释,这些知识对于理解和操作计算机系统至关重要。