您的位置:首页 > 游戏 > 游戏 > 画册设计公司机构_哈尔滨网页网站制作_今天新闻头条新闻_百度热议怎么上首页

画册设计公司机构_哈尔滨网页网站制作_今天新闻头条新闻_百度热议怎么上首页

2025/3/5 0:19:50 来源:https://blog.csdn.net/blackA_/article/details/145959193  浏览:    关键词:画册设计公司机构_哈尔滨网页网站制作_今天新闻头条新闻_百度热议怎么上首页
画册设计公司机构_哈尔滨网页网站制作_今天新闻头条新闻_百度热议怎么上首页

文章目录

  • 1. 复习集合框架
    • 1.1 List、Set 和 Map 的基本使用
    • 1.2 对比 List、Set 和 Map
  • 2. 复习异常处理
    • 2.1 try-catch 语句
    • 2.2 throws 关键字
    • 2.3 自定义异常
  • 3. 实践项目:学生管理系统
    • 3.1 代码实现
    • 3.2 运行示例
  • 4. 总结
    • 4.1 集合框架
    • 4.2 异常处理
  • 5. 今日生词

今日学习目标
在这里插入图片描述

1. 复习集合框架

1.1 List、Set 和 Map 的基本使用

(1)List(有序、可重复)

  • 主要实现类:ArrayList、LinkedList
  • 特点:
    • 允许存储重复元素
    • 保持插入顺序
    • 可以通过索引访问元素
  • 常见操作:
List<String> list = new ArrayList<>();
list.add("Alice");
list.add("Bob");
list.add("Alice");  // 允许重复元素
list.remove("Bob");
System.out.println(list.contains("Alice"));  // true
for (String name : list) {System.out.println(name);
}

(2)Set(无序、不重复)

  • 主要实现类:HashSet(无序)、TreeSet(有序)
  • 特点:
    • 不允许存储重复元素
    • TreeSet 默认按自然顺序排序
  • 常见操作:
Set<String> set = new HashSet<>();
set.add("Alice");
set.add("Bob");
set.add("Alice");  // 不会重复
System.out.println(set.contains("Alice"));  // true
for (String name : set) {System.out.println(name);
}

(3)Map(键值对存储)

  • 主要实现类:HashMap(无序)、TreeMap(有序)
  • 特点:
    • HashMap 允许 null 作为键
    • TreeMap 会对键自动排序
  • 常见操作:
Map<String, Integer> map = new HashMap<>();
map.put("Alice", 90);
map.put("Bob", 85);
map.put("Charlie", 92);
System.out.println(map.get("Alice"));  // 90
map.remove("Bob");
for (String key : map.keySet()) {System.out.println(key + ": " + map.get(key));
}

1.2 对比 List、Set 和 Map

特性ListSetMap
是否允许重复元素允许不允许仅键唯一,值可重复
是否有序按插入顺序HashSet: 无序HashMap: 无序
TreeSet: 自然排序TreeMap: 按键排序
适用场景需要索引访问、存储有序数据需要去重的数据存储需要存储键值对数据、

2. 复习异常处理

2.1 try-catch 语句

try {int result = 10 / 0;
} catch (ArithmeticException e) {System.out.println("发生除零错误:" + e.getMessage());
}

分析:
代码执行流程
1)进入 try

  • 代码尝试执行 10 / 0
  • 由于 0 不能作为除数,Java 在运行时会抛出 ArithmeticException

2)异常抛出

  • 10 / 0 违反了数学运算规则,因此抛出 ArithmeticException,异常信息为:by zero

3)进入 catch

  • catch (ArithmeticException e) 捕获到 ArithmeticException,程序不会直接崩溃,而是执行catch内部代码。

4)输出错误信息

  • e.getMessage() 返回异常的详细信息(/ by zero)。
  • System.out.println("发生除零错误:" + e.getMessage()); 的输出结果为:
发生除零错误:/ by zero

2.2 throws 关键字

public void readFile(String fileName) throws IOException {FileReader file = new FileReader(fileName);
}
  • 代码执行流程
    1)方法声明

  • readFile(String fileName):一个公共方法,接收文件名作为参数。

  • throws IOException:声明该方法可能抛出IOException异常,调用此方法时,调用者必须处理这个异常。
    2)文件读取

  • FileReader file = new FileReader(fileName);试图打开 fileName 指定的文件进行读取。

  • 如果文件存在且可读,则 FileReader 正常创建。

  • 如果文件不存在、无权限访问或出现 I/O 错误,则 FileReader 抛出 IOException,方法执行中断。

2.3 自定义异常

class InvalidScoreException extends Exception {public InvalidScoreException(String message) {super(message);}
}public class Test {public static void checkScore(int score) throws InvalidScoreException {if (score < 0 || score > 100) {throw new InvalidScoreException("成绩必须在 0 到 100 之间");}}
}

代码执行流程

步骤操作
1调用 checkScore(105),105 > 100,触发 throw new InvalidScoreException(“成绩必须在 0 到 100 之间”)
2InvalidScoreException 被抛出,程序终止执行该方法
3调用者需要 捕获异常(try-catch) 或 继续声明 throws

作用

  • InvalidScoreException(自定义异常)

    • 继承 Exception,表示它是一个 已检查异常(Checked Exception)。
    • 通过 super(message) 传递错误信息,方便在异常发生时输出具体信息。
  • checkScore(int score) 方法

    • 接收一个整数 score(成绩)。
    • 如果成绩小于 0 或大于 100,则抛出 InvalidScoreException,表示成绩不合法。
    • 由于 throws InvalidScoreException,调用 checkScore() 时 必须 处理异常(try-catch)或继续 throws 传递。

3. 实践项目:学生管理系统

功能需求

  • 使用 HashMap<String, Integer> 存储学生的姓名和成绩。
  • 允许用户输入学生姓名和成绩,并存入 HashMap。
  • 如果用户输入无效成绩(如负数或大于 100),则抛出 InvalidScoreException 并处理。
  • 允许用户查询学生成绩。

3.1 代码实现

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;// 自定义异常
class InvalidScoreException extends Exception {public InvalidScoreException(String message) {super(message);}
}public class StudentManager {private static Map<String, Integer> studentMap = new HashMap<>();private static Scanner scanner = new Scanner(System.in);// 添加学生信息public static void addStudent(String name, int score) throws InvalidScoreException {if (score < 0 || score > 100) {throw new InvalidScoreException("成绩必须在 0 到 100 之间!");}studentMap.put(name, score);System.out.println("学生 " + name + " 添加成功,成绩:" + score);}// 查询学生成绩public static void getStudentScore(String name) {if (studentMap.containsKey(name)) {System.out.println(name + " 的成绩是:" + studentMap.get(name));} else {System.out.println("学生 " + name + " 不存在!");}}public static void main(String[] args) {while (true) {System.out.println("\n1. 添加学生信息\n2. 查询学生成绩\n3. 退出");System.out.print("请选择操作:");int choice = scanner.nextInt();scanner.nextLine(); // 清除换行符if (choice == 1) {try {System.out.print("请输入学生姓名:");String name = scanner.nextLine();System.out.print("请输入学生成绩:");int score = scanner.nextInt();scanner.nextLine();addStudent(name, score);} catch (InvalidScoreException e) {System.out.println("输入错误:" + e.getMessage());} catch (Exception e) {System.out.println("输入无效,请重试!");}} else if (choice == 2) {System.out.print("请输入要查询的学生姓名:");String name = scanner.nextLine();getStudentScore(name);} else if (choice == 3) {System.out.println("退出系统!");break;} else {System.out.println("无效选项,请重新选择!");}}}
}

3.2 运行示例

1. 添加学生信息
2. 查询学生成绩
3. 退出
请选择操作:1
请输入学生姓名:Alice
请输入学生成绩:95
学生 Alice 添加成功,成绩:951. 添加学生信息
2. 查询学生成绩
3. 退出
请选择操作:1
请输入学生姓名:Bob
请输入学生成绩:110
输入错误:成绩必须在 0 到 100 之间!1. 添加学生信息
2. 查询学生成绩
3. 退出
请选择操作:2
请输入要查询的学生姓名:Alice
Alice 的成绩是:95

4. 总结

4.1 集合框架

集合类型主要实现类特点
ListArrayListLinkedList允许重复元素,按插入顺序存储
SetHashSetTreeSet不允许重复元素,TreeSet 具有排序功能
MapHashMapTreeMap键唯一,值可重复,TreeMap 键自动排序

4.2 异常处理

异常类型说明处理方式
try-catch捕获并处理异常用于处理运行时异常
throws 声明异常用于方法可能抛出的异常
自定义异常继承 Exception RuntimeException用于特定业务逻辑

5. 今日生词

1.audio 2.packages 3.inspector 4.effects 5.models

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com