You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 22:35:19