3-4 jmu-java-m03-简易通讯录2 (10分)

这篇博客介绍了如何使用Java编写一个简单的通讯录系统,包括Person类和Address类的设计。Person类包含id、name、phoneNumber和Address属性,Address类包含country、province、city、street和zipcode属性。博客内容涵盖类的构造函数、getter/setter方法和toString方法的实现,以及main方法中对象的创建、删除、修改和查找操作。示例展示了输入输出的具体流程。

3-4 jmu-java-m03-简易通讯录2 (10分)
编写代码实现一个简单通讯录

Person类: 属性(代码中属性请按照如下顺序编写): Static String hostname;
int id;
String name;
String phoneNumber;
Address address;

构造函数:
Person(String name, String phoneNumber, Address address)
(不需要传入id,id使用初始化块从1开始实现自增长,可添加一个static int count属性进行id的自增操作)

方法:
getter/setter方法、toString方法(建议使用Eclipse进行自动生成)

静态初始化块:
为hostname赋值"zhangsan",并输出"init"

Address类:

属性:
String country
String province
String city
String street
String zipcode

构造函数:
Address(String country, String province, String city, String street, String zipcode)

方法:
getter/setter方法、toString方法(建议使用自动生成)

一.编写Person类
二.编写Address类
三.main方法:**

输入格式:
依次输入name,phoneNumber,country,province,city,street,zipcode创建三个对象并存入ArrayList。

输入一个已有id,将其对应数据删除。

输入一个已有id,然后依次输入name,phoneNumber,country,province,city,street,zipcode将id对应数据修改为输入数据。

输入一个id,并将该条数据打印出来,找不到则输出相应提示信息。

输出格式:
输出hostname

创建对象完成后输出add success!

删除对象完成后输出delete success!

修改完对象输出change success!

寻找成功后先输出找到的这个对象的信息,然后输出find success!

未查找成功则输出Not find!

将ArrayList中数据输出

输入样例:
xiaoming 123456 China guangdong jieyang street 350200
Alex 654321 China hunan loudi street 350201
Mike 233233 China sichuang chengdu street 3502022
1
3
Tony 322322 China hubei yichang street 350232
3

输出样例:
init
zhangsan
add success!
delete success!
change success!
Person [id=3, name=Tony, phoneNumber=322322, address=Address [country=China, province=hubei, city=yichang, street=street, zipcode=350232]]
find success!
Person [id=2, name=Alex, phoneNumber=654321, address=Address [country=China, province=hunan, city=loudi, street=street, zipcode=350201]]
Person [id=3, name=Tony, phoneNumber=322322, address=Address [country=China, province=hubei, city=yichang, street=street, zipcode=350232]]

作者
郑如滨
单位
集美大学
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
	
public class Main{
   
   
	
		public static void main(String[] args) {
   
   
			Scanner sc=new Scanner(System.in );
			ArrayList<Person> pe = new ArrayList<>();
			//创建三个对象存入Array List
			String name,phoneNumber,country,province,city,street,zipcode;
			System.out.println(Person.getHostname());
			for(int index=0;index<3;index++)
			{
   
   
				name=sc.next();
				phoneNumber=sc.next();
				country=sc.next();
				province=sc.next();
				city=sc.next();
				street=sc.next();
				zipcode=sc.next();
				Address a1=new 
<think> 根据用户需求,用户希望了解jmu-Java 7-2任务中关于throw和throws的知识点。由于引用内容中提到了7-1题目的异常处理示例,我们可以推断7-2可能也是类似的异常处理题目,但重点在throw和throws的使用。 由于没有直接给出7-2的具体题目,我将根据常见Java异常处理中throw和throws的知识点,结合题目可能的要求进行解释。 在Java中,throw和throws都是处理异常的关键字: - throw:用于在方法体内抛出一个具体的异常对象。 - throws:用于方法声明,表示该方法可能抛出的异常,由调用者处理。 通常,在自定义异常的场景中,我们会用到throw主动抛出异常,而throws用于声明方法可能抛出的异常。 参考引用中的7-1题目,它涉及了自定义异常(IllegalScoreException, IllegalNameException)以及系统异常(NoSuchElementException)的处理。在7-2题目中,可能要求我们使用throw和throws来处理异常。 假设7-2题目要求: 1. 定义自定义异常类。 2. 在方法中通过throw抛出异常。 3. 在方法声明中使用throws声明异常。 4. 在main方法中捕获处理这些异常。 下面是一个可能的示例代码框架,展示throw和throws的使用: ```java // 自定义异常类 class MyCustomException extends Exception { public MyCustomException(String message) { super(message); } } public class Main { // 方法声明中使用throws,表示该方法可能抛出MyCustomException异常 public static void checkValue(int value) throws MyCustomException { if (value < 0) { // 使用throw抛出自定义异常 throw new MyCustomException("Value cannot be negative: " + value); } System.out.println("Value is valid: " + value); } public static void main(String[] args) { try { checkValue(-10); // 调用可能抛出异常的方法 } catch (MyCustomException e) { System.out.println(e); // 捕获并打印异常 } } } ``` 在7-2任务中,可能要求完成类似的功能,例如输入校验,当输入不符合要求时,抛出自定义异常。 根据引用中7-1的输出样例,我们可以推测7-2可能要求类似的输出格式,例如捕获异常并打印。 因此,解决7-2任务的步骤可能包括: 1. 定义题目要求的自定义异常类(如果有)。 2. 在需要的方法内部,使用throw关键字在条件满足时抛出自定义异常或系统异常。 3. 在方法声明处使用throws关键字声明该方法可能抛出的异常(除了RuntimeException及其子类,其他检查异常必须声明)。 4. 在调用该方法的代码处(如main方法)使用try-catch块捕获并处理异常,按照题目要求打印异常信息。 注意:引用中7-1使用了`System.out.println(e);`来打印异常,这会将异常对象的toString()方法结果打印出来,通常包括异常类名和详细信息。 如果题目要求必须使用throw和throws,那么请确保: - 在方法内部通过throw抛出异常对象。 - 在方法签名中通过throws声明异常(检查异常)。 - 在调用方法的地方捕获异常。 如果题目没有提供具体的要求,建议查看题目描述,根据要求实现。 由于我无法获取7-2的具体题目,以上是基于常见题型和引用中7-1的推测。 相关问题: 1. 在Java中,throw和throws有什么区别? 2. 如何自定义一个异常类? 3. 在Java中,什么是检查型异常(checked exception)和非检查型异常(unchecked exception)? 4. 在方法中抛出异常后,程序流程会如何变化? 如果用户能提供7-2的具体题目描述,可以给出更精确的解答。 </think> 基于您查询的“jmu-Java 7-2任务中throw与throws知识点”,结合异常处理核心逻辑和引用[^1]的异常处理示例,整理关键内容如下: ### 一、`throw`与`throws`核心区别 | **关键字** | **作用位置** | **功能** | **示例** | |------------|------------------|-------------------------------------|-------------------------------------------| | `throw` | 方法**内部** | 手动抛出异常对象 | `throw new IllegalArgumentException("无效参数")` | | `throws` | 方法**声明处** | 声明可能抛出的异常类型(向上传递) | `public void read() throws IOException` | ### 二、7-2任务典型解决方案 ```java // 1. 定义自定义异常(参考引用[^1]) class InvalidInputException extends Exception { public InvalidInputException(String message) { super(message); } } public class Task7_2 { // 2. 使用throws声明异常 public static void processInput(String data) throws InvalidInputException { if (data == null || data.isEmpty()) { // 3. 使用throw抛出具体异常 throw new InvalidInputException("输入不能为空"); } // 业务逻辑... } public static void main(String[] args) { try { processInput("test"); // 调用声明异常的方法 } catch (InvalidInputException e) { // 4. 捕获并打印异常(符合引用[^1]要求) System.out.println(e); // 输出: InvalidInputException: 输入不能为空 } } } ``` ### 三、关键注意事项 1. **自定义异常继承** - 检查异常需继承 `Exception` - 运行时异常需继承 `RuntimeException` 2. **异常传递机制** ```mermaid graph LR A[方法内部throw异常] --> B{方法是否声明throws?} B -->|是| C[异常传递给调用者] B -->|否| D[立即终止并报错] ``` 3. **打印异常技巧** - `System.out.println(e)` 输出异常类型+消息(如引用[^1]输出`IllegalNameException: ...`) - `e.printStackTrace()` 输出完整堆栈跟踪(调试用) ### 四、典型应用场景 1. **参数校验** ```java if (score < 0 || score > 100) { throw new IllegalScoreException("数超范围:" + score); // 参考引用[^1] } ``` 2. **资源访问** ```java public void loadConfig() throws FileNotFoundException { File file = new File("config.cfg"); if (!file.exists()) { throw new FileNotFoundException("配置文件缺失"); } } ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值