Java课程新手:如何在Couch类中实现腿数合法性校验?
解决Couch类腿数合法性校验问题
首先,你当前的setNbrLegs方法逻辑存在漏洞——即使进入else分支提示错误,大概率是仍执行了赋值操作,导致非法数值被存入。正确的核心逻辑应该是仅当腿数为4或8时才给实例变量赋值,非法情况不修改现有值(或直接拒绝赋值)。
修正后的代码示例
public class Couch { // 沙发腿数的实例变量 private int nbrLegs; // 设置腿数的方法 public void setNbrLegs(int legs) { // 严格限定合法值:仅4或8条腿 if (legs == 4 || legs == 8) { this.nbrLegs = legs; System.out.println("沙发腿数设置成功:" + legs); } else { // 非法情况:仅提示错误,不修改原有值 System.out.println("错误:沙发腿数只能是4或8,当前输入的" + legs + "条腿不合法"); // 若课程已涉及异常处理,可抛出异常强化校验: // throw new IllegalArgumentException("沙发腿数必须为4或8"); } } // 获取腿数的方法 public int getNbrLegs() { return nbrLegs; } }
关键逻辑说明
- 合法值才赋值:仅当传入的腿数是4或8时,才更新实例变量
nbrLegs,从根源避免非法值存入。 - 非法值不修改状态:如果传入5这类非法值,else分支仅输出错误提示,不会改变
nbrLegs的现有值(若之前有合法赋值)。 - 可选严格校验:如果课程已经覆盖异常处理,可以抛出
IllegalArgumentException,直接终止非法赋值操作,更符合Java的错误处理规范。
硬编码测试验证
public class Main { public static void main(String[] args) { Couch myCouch = new Couch(); myCouch.setNbrLegs(4); // 合法,nbrLegs被设为4 System.out.println("当前腿数:" + myCouch.getNbrLegs()); myCouch.setNbrLegs(5); // 非法,nbrLegs保持4不变 System.out.println("当前腿数:" + myCouch.getNbrLegs()); myCouch.setNbrLegs(8); // 合法,nbrLegs被设为8 System.out.println("当前腿数:" + myCouch.getNbrLegs()); } }
内容的提问来源于stack exchange,提问作者Jodyoda
相关产品推荐
相关产品推荐

