利用BigDecimal将价格分转为元的方法

    private static String f2y(long fen){

    String yuan = "";

    BigDecimal fenPrince = new BigDecimal(fen);

BigDecimal[] result = fenPrince.divideAndRemainder(new BigDecimal(100));

if(result.length == 2){

if(result[1].compareTo(new BigDecimal(10)) < 0){

yuan = result[0] + ".0" + result[1];

}else {

yuan = result[0] + "." + result[1];

}

}

return yuan;

    }

题1:客户信息录入系统 题干: 你正在开发一个简单的客户信息录入系统。请创建一个 Customer 类,包含以下私有属性:客户ID ( id , String )、姓名( name , String )、年龄( age , int )。要求: 1. 使用封装原则,为每个属性提供公共的getter和setter方法。 2. 在 setAge 方法中,进行业务逻辑判断,如果年龄不在0-150之间,则抛出 IllegalArgumentException 异常,并提示“年龄不合法”。 3. 编写一个测试类,在 main 方法中创建一个 Customer 对象,尝试设置一个非法年龄 (如-5),并捕获异常,在控制台打印异常信息。 考察重点: 面向对象基础(类的定义) 封装(private属性,public getter/setter) 简单的业务逻辑验证与异常抛出( IllegalArgumentException ) 解题思路: 1. 定义 Customer 类,声明私有属性。 2. 使用IDE或手动生成getter和setter方法。 3. 在 setAge(int age) 方法内部,使用 if 语句判断参数 age 的范围。 4. 如果超出范围,使用 throw new IllegalArgumentException("年龄不合法") 抛出异常。 5. 在测试类的 main 方法中,实例化 Customer 对象,在调用 setAge(-5) 时,使用try-catch块 捕获 IllegalArgumentException 。 题2:计算平均订单金额 题干: 你有一个 ArrayList<Double> ,里面存储了一批订单的金额。需要编写一个方法 calculateAverageOrderAmount 来计算平均订单金额。 1. 考虑业务异常情况:如果订单列表为 null 或为空(size为0),则抛出 IllegalArgumentException 并提示相应信息(“订单列表不能为空”或“订单列表不能为 null”)。 2. 在main方法中,别测试三种情况:a) 正常列表 b) 空列表 c) null列表,并捕获异常,打印友 好提示信息。 考察重点: 方法的定义与使用。 使用 IllegalArgumentException 处理参数不合法的业务异常。 ArrayList 的 size() 方法。 try-catch块的基本用法。 解题思路: 1. 定义方法 public static double calculateAverageOrderAmount(ArrayList<Double> orders) 。 2. 在方法开头,使用条件判断先验证参数 orders 。如果为 null ,直接抛出异常。如果 orders.isEmpty() ,也抛出异常。 3. 如果参数合法,则遍历列表求和,然后除以列表大小并返回结果。 4. 在main方法中,创建不同的测试用例,调用该方法,并用try-catch捕获异常。 题3:银行账户操作 题干: 设计一个银行账户类(BankAccount),包括账户号码(accountNumber)和余额(balance)。要求 实现存款(deposit)和取款(withdraw)方法。当取款金额大于余额时,抛出自定义异常 (InsufficientBalanceException)。 考察重点:封装、自定义异常、异常处理 解题思路: 1. 创建自定义异常类InsufficientBalanceException,继承Exception。 2. 在BankAccount类中,实现deposit方法(增加余额)和withdraw方法(减少余额,但需要检查余 额是否充足)。 3. 在withdraw方法中,如果取款金额大于余额,则抛出InsufficientBalanceException。 题4:订单金额 题干: 某支付系统需计算订单总金额(商品单价×数量+运费),但发现使用 double 类型时会出现精度误差 (如0.1+0.2≠0.3)。请设计 OrderCalculator 类,要求: 使用 BigDecimal 进行金额计算 若输入的单价或数量为负数,抛出 IllegalArgumentException 并提示"金额/数量不能为负" 在 main 方法中演示如何处理该异常并返回友好提示 考察重点: BigDecimal的用法( setScale 、 ROUND_HALF_UP ) 异常处理:非法参数异常 封装:将计算逻辑封装在独立类中 解题思路: 1. 在 OrderCalculator 中定义 calculateTotal(double price, int quantity, double shipping) ,内部转为 BigDecimal 2. 检查参数合法性,负数时抛出 IllegalArgumentException 3. 使用 BigDecimal 的 multiply 和 add 方法计算,保留2位小数 4. 在 main 中用 try-catch 捕获异常,返回"输入错误:金额/数量不能为负" 题5:商品库存管理 题干: 实现一个商品库存管理模块。有一个 Product 类(有 id , name , price 属性)。现在需要用一个 ArrayList<Product> 来代表库存列表。请编写程序实现以下功能: 1. 向库存列表中添加3个商品。 2. 根据商品ID,查找并打印该商品的信息。如果找不到,则打印“未找到该商品”。 3. 根据商品ID,从库存中移除一个商品。如果移除成功,打印“移除成功”;如果找不到ID,则打 印“移除失败,商品不存在”。 考察重点: ArrayList 的基本API: add , get , remove , size , 遍历(for-each循环或for循环) 简单的条件判断和流程控制。 解题思路: 1. 创建 Product 类。 2. 在main方法中,初始化一个 ArrayList<Product> 。 3. 创建几个 Product 对象,使用 add 方法加入列表。 4. 实现查找功能:遍历ArrayList,比较每个素的 id 与目标ID。 5. 实现移除功能:同样需要遍历,找到目标素后,使用 remove(Object o) 或 remove(int index) 方法进行移除。 题6:员工薪资系统 题干: 某公司有三类员工: SalariedEmployee :固定月薪 HourlyEmployee :时薪×工作小时数(超过160小时部按1.5倍计算) CommissionEmployee :底薪+销售额×提成率 请设计抽象类 Employee (含抽象方法 calculateSalary() ),并让三类员工继承它。在 main 方法 中,用 ArrayList<Employee> 存储不同员工,计算并输出每位员工的薪资。 考察重点: 抽象类与继承 多态:通过父类引用调用子类方法 ArrayList存储多态对象 解题思路: 1. 创建抽象类 Employee (含 name 字段和抽象方法 calculateSalary() ) 2. 三类员工别实现 salary 计算逻辑(注意加班工资和提成计算) 3. 在 main 中创建 ArrayList<Employee> ,添加不同员工对象 4. 遍历列表,调用 calculateSalary() 并输出(体现多态) 题7:物流运费计算 题干: 某物流公司需计算不同运输方式的运费: StandardShipping :首重1kg内10,续重每kg 2 ExpressShipping :首重1kg内20,续重每kg 5 若重量为负数,抛出 IllegalWeightException (自定义异常) 请设计抽象类 Shipping (含抽象方法 calculateFee(double weight) ),并让两类运输方式继承。 在 main 方法中,用 ArrayList<Shipping> 存储不同运输方式,计算并输出5kg包裹的运费。 考察重点: 继承与多态 自定义异常 ArrayList存储多态对象 解题思路: 1. 创建 IllegalWeightException 继承 Exception 2. 抽象类 Shipping 含 calculateFee(double weight) ,子类实现段计费逻辑 3. 在 main 中创建 ArrayList<Shipping> ,添加两种运输方式 4. 遍历列表,调用 calculateFee(5) 并输出(体现多态) 题8:图书馆借阅系统 题干: 图书馆有书(Book)和杂志(Magazine)两种资源,它们都可以被借阅。请设计一个借阅接口 (Borrowable),包含借阅(borrow)和归还(returnItem)方法。然后设计书和杂志类实现该接 口,并实现一个图书馆类(Library)来管理这些资源,记录借阅状态(是否被借出)。 考察重点:接口、ArrayList 解题思路: 1. 定义Borrowable接口,包含borrow和returnItem方法。 2. Book和Magazine类实现Borrowable接口,并记录自己的借阅状态。 3. Library类使用ArrayList来管理所有可借阅资源。 4. 实现借阅和归还方法,改变资源的借阅状态 题9:订单处理系统 题干: 一个订单处理系统,订单(Order)包含订单号、商品列表(商品类Product,包含名称和价格)、总金 额。请设计订单类和商品类,实现添加商品、删除商品、计算总金额的方法。当订单中商品数量为0时, 不能生成订单,抛出异常(EmptyOrderException)。 考察重点:集合操作、异常 解题思路: 1. 创建Product类,包含名称和价格。 2. 创建Order类,包含订单号和ArrayList,以及总金额。 3. 实现添加商品(addProduct)和删除商品(removeProduct)方法,每次操作后重新计算总金 额。 4. 实现一个生成订单的方法(generateOrder),如果商品列表为空,则抛出 EmptyOrderException。 题10:学生成绩列表管理 题干: 创建一个 Student 类,包含学号( id ,String)和成绩( grade ,int)。使用 ArrayList<Student> 管理一组学生成绩。 1. 编写方法 addStudent 添加学生,如果学号已存在则不允许添加(抛出异常或返回false,这里 要求抛出 DuplicateIdException 自定义异常)。 2. 编写方法 removeStudent 根据学号删除学生,如果学号不存在则抛出 StudentNotFoundException 。 3. 编写方法 getStudentById 根据学号查找学生,返回学生对象,找不到返回null。 4. 编写方法 calculateAverageGrade 计算平均成绩。 考察重点: ArrayList的添加、删除、遍历 自定义异常 在集合中查找素 解题思路: 1. 定义 Student 类。 2. 定义 DuplicateIdException 和 StudentNotFoundException 。 3. 在管理类中,使用一个 ArrayList<Student> 作为成员变量。 4. 在 addStudent 中,遍历列表检查学号是否已存在,存在则抛异常,否则添加。 5. 在 removeStudent 中,遍历列表找到对应学号的学生,删除,如果遍历完没找到则抛异常。 6. 平均成绩需要遍历列表求和,然后除以人数。 题11:用户注册验证 题干: 实现用户注册功能。有一个 User 类( username , password )。有一个 UserService 类,内部使 用一个 ArrayList<User> 模拟数据库。 1. 定义一个自定义异常 UserAlreadyExistsException ,继承自 Exception 。 2. 在 UserService 中编写 register 方法,实现注册逻辑。在添加新用户前,需要检查用户名是 否已存在(遍历ArrayList)。如果已存在,则抛出 UserAlreadyExistsException 。 3. 在main方法中测试注册已存在的用户,并捕获该自定义异常,给出友好提示。 考察重点: 自定义异常的定义。 在业务逻辑中主动抛出异常。 ArrayList的遍历与查找。 受检异常(checked exception)的处理(throws/try-catch)。 解题思路: 1. 创建 UserAlreadyExistsException 类,提供构造方法。 2. 在 UserService 的 register(User newUser) 方法中,遍历现有的用户列表,比较用户名。 3. 如果找到重复用户名,则 throw new UserAlreadyExistsException("用户名 " + newUser.getUsername() + " 已存在") 。 4. 在调用 register 方法的地方,必须处理这个受检异常(使用try-catch或在方法签名上声明 throws)。 题12:医院挂号系统的异常处理 题干: 某医院需要实现挂号功能,医生信息存储在 ArrayList<Doctor> 中, Doctor 类包含医生ID、姓名和剩 余号源。请设计一个 RegistrationService 类,提供以下方法: register(int doctorId, String patientName) :患者挂号,若医生不存在,抛出 DoctorNotFoundException (自定义异常);若医生号源不足,抛出 NoAvailableSlotException (自定义异常);若患者姓名为空,抛出 InvalidPatientException (自定义异常) 考察重点: ArrayList的查找和修改 自定义异常 异常处理:医生不存在、号源不足、患者信息非法 解题思路: 1. 创建 DoctorNotFoundException 、 NoAvailableSlotException 和 InvalidPatientException 继承 Exception ,包含 message 字段 2. 在 RegistrationService 类中实现 register 方法 3. 在 register 方法中查找医生,检查号源和患者信息,若不满足条件则抛出相应异常 4. 测试时,通过 try-catch 捕获异常并打印错误信息
09-26
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值