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

Java入门求助:在HouseDriver类创建多个不同House对象遇问题

问题解决步骤

你的代码存在变量名不匹配、构造函数使用错误等问题,逐个修正后即可创建目标对象:

1. 修正House类的错误

House类里多处出现未定义变量、成员变量引用错误的问题,修正后的代码如下:

public class House {
    private String houseName;
    private int houseAge;
   
    // 构造函数:用this区分类成员变量和方法参数
    public House(String houseName, int houseAge) {
        this.houseName = houseName;
        this.houseAge = houseAge;
    }

    public String getName() {
        return houseName;
    }

    // 修正getAge方法,返回类成员变量houseAge
    public int getAge() {
        return houseAge;
    }

    // 修正setName方法的赋值逻辑
    public void setName(String houseName) {
        this.houseName = houseName;
    }
}

错误点说明:

  • 构造函数中你使用了未定义的nameIn、ageIn,需要用this.成员变量名来明确指代类的成员变量,将传入的参数赋值给它
  • getAge()方法返回的ageIn是未定义变量,应返回类中声明的houseAge
  • setName方法同样存在参数名不匹配的问题,用this修正即可

2. 修正HouseDriver类,创建3个带不同参数的House对象

你原本使用了无参的new House(),但自定义构造函数后,Java不会自动生成无参构造,因此创建对象必须传入String和int类型的参数。修正后的代码:

public class HouseDriver {
    public static void main(String[] args) {
        // 创建3个参数不同的House对象
        House house1 = new House("湖畔小屋", 5);
        House house2 = new House("山间别墅", 20);
        House house3 = new House("市区公寓", 2);

        // 验证对象属性是否正确
        System.out.println(house1.getName() + " 房龄:" + house1.getAge());
        System.out.println(house2.getName() + " 房龄:" + house2.getAge());
        System.out.println(house3.getName() + " 房龄:" + house3.getAge());
    }
}

错误点说明:

  • 当类中存在自定义构造函数时,系统不再默认提供无参构造,因此必须按照自定义构造函数的要求传入对应类型的参数

运行结果

执行HouseDriver后会输出:

湖畔小屋 房龄:5
山间别墅 房龄:20
市区公寓 房龄:2

内容的提问来源于stack exchange,提问作者John Elsi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 15:45:01