如何在Java程序中使用函数和对象实现输入出生年份判断老年人资格功能
Java老年人资格判断程序面向对象改造方案
改造思路
原代码所有逻辑都耦合在main入口方法中,我们通过抽离独立函数、封装对象属性与方法的方式调整,核心原则是把交互逻辑和业务计算逻辑拆分,提升代码可维护性。
改造后完整代码
package senioreligible; import java.time.Year; import java.util.Scanner; // 封装老年人资格判断相关能力的实体类 public class SeniorCitizen { // 成员属性:用户出生年份 private final int birthYear; // 老年人年龄阈值,定义为常量方便后续统一修改 private static final int SENIOR_AGE_THRESHOLD = 60; // 构造方法,创建对象时传入出生年份 public SeniorCitizen(int birthYear) { this.birthYear = birthYear; } // 成员方法:计算当前年龄 public int getCurrentAge() { return Year.now().getValue() - birthYear; } // 成员方法:判断是否符合老年人资格 public boolean isEligibleForSenior() { return getCurrentAge() >= SENIOR_AGE_THRESHOLD; } public static void main(String[] args) { // 入口仅处理用户交互 System.out.print("Enter your Year of Birth: "); Scanner in = new Scanner(System.in); int inputBirthYear = in.nextInt(); in.close(); // 创建对应用户的对象 SeniorCitizen user = new SeniorCitizen(inputBirthYear); int age = user.getCurrentAge(); System.out.println("You are " + age + " years old."); // 调用方法获取判断结果输出 if (user.isEligibleForSenior()) { System.out.println("You are eligible to be senior citizen."); } else { System.out.println("You are not eligible to be senior citizen."); } } }
改造说明
- 封装了独立的
SeniorCitizen类,每个实例对应一个用户,绑定用户的出生年份属性,符合面向对象的设计思路 - 年龄计算、资格判断逻辑都封装为类的成员方法,后续如果需要调整年龄阈值,只需要修改
SENIOR_AGE_THRESHOLD常量即可,不需要改动逻辑代码 - 入口方法仅负责输入输出交互,和核心业务逻辑解耦,后续如果要把输入改为从文件读取、或者把输出改为前端展示,都不需要修改计算部分的代码
内容的提问来源于stack exchange,提问作者Pinakabet
相关产品推荐
相关产品推荐

