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

Java构造函数调用及print方法错误排查与修复请求

问题分析与修复方案

错误原因解析

  • 构造函数调用参数错误:创建minor3时,把5.5误写为5,5,逗号会被当作参数分隔符,导致传入了5个参数(int, int, int, int, boolean),但类中没有对应参数列表的构造函数,触发报错。
  • 实例方法调用方式错误:print()是Minor类的非静态实例方法,必须通过对象实例调用(对象.print()),你直接用print(对象)的方式,相当于试图调用一个需要传入Minor对象的静态方法,而类中没有定义该方法,导致参数不匹配报错。
  • 未按要求使用三个构造函数:原main方法里三个对象都用了四参数构造,未用到无参和单参数构造,不符合“用3个不同构造函数创建对象”的需求。

修复后的完整代码

/** class Student
 * with 4 instance variables,
 * 3 constructors, a print method,
 * and a main method to test them.
 */
public class Minor
{
    // 4个实例变量
    private int id;
    private int age;
    private double height;
    private boolean goodVictim;
    

    // 3个构造函数初始化实例变量
    // 1. 无参构造,使用默认值
    public Minor() {
        id = 0;
        age = 11;
        height = 5;
        goodVictim = true;
    }
    // 2. 单参数构造,其余使用默认值
    public Minor(boolean initGoodVictim) {
        this(); // 调用无参构造复用默认值初始化逻辑
        goodVictim = initGoodVictim;
    }
    // 3. 四参数构造
    public Minor(int initId, int initAge, double initHeight, boolean initGoodVictim) {
        id = initId;
        age = initAge;
        height = initHeight;
        goodVictim = initGoodVictim;
    }


    // 打印所有实例变量的方法
    public void print()
    {
        System.out.println("ID: " + id);
        System.out.println("年龄: " + age);
        System.out.println("身高: " + height);
        System.out.println("是否为goodVictim: " + goodVictim);
        System.out.println("------------------------"); // 分隔不同对象的输出,提升可读性
    }

    // main方法
    public static void main(String[] args)
    {
       // 使用3个不同构造函数创建Minor对象
        Minor minor1 = new Minor(); // 无参构造
        Minor minor2 = new Minor(false); // 单参数构造
        Minor minor3 = new Minor(12052008, 14, 5.5, true); // 四参数构造


       // 调用各自的print()方法
        minor1.print();
        minor2.print();
        minor3.print();
    }
}

修复说明

  1. 修正构造函数参数:将minor3创建代码中的5,5改为5.5,确保参数数量、类型与四参数构造函数匹配。
  2. 修正方法调用逻辑:把print(minor1)改为minor1.print(),通过对象实例调用非静态方法。
  3. 按需求使用构造函数:分别用无参、单参数、四参数构造函数创建三个对象,满足题目要求。
  4. 优化构造函数复用:在单参数构造中添加this()调用无参构造,避免重复编写默认值初始化代码,提升可维护性。
  5. 优化输出可读性:给print方法的输出添加字段说明和分隔线,让结果更清晰。

内容的提问来源于stack exchange,提问作者Mohammad Kherfan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 21:40:50