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

Java中如何将继承Vehicle类的Moped对象加入ArrayList并完整打印

问题解决方案

一、父类属性未打印问题修复

问题原因

  • 你在Moped类中重写toString()方法时,没有调用父类Vehicle的toString()逻辑,所以只会输出子类自身定义的属性
  • 现有代码存在3处拼写错误,会先触发编译失败:
    • Moped类的属性定义为private String Brand;,后续get/set方法中使用的是小写brand,大小写不匹配
    • 主方法中lista.add(mp)变量名错误,你定义的集合变量名是list,多了末尾的a
    • 录入信息时mp.setBrad(k)方法名拼写错误,正确方法名是setBrand

修复后的Moped类代码

package data;

public class Moped extends Vehicle{
    // 统一属性名小写,和后续get/set方法保持一致
    private String brand;
    private String type;

    public String getBrand() {
        return brand;
    }
    public void setBrand(String brand) {
        this.brand= brand;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }

    // 重写toString时调用父类的toString方法,拼接父类属性输出
    public String toString() {
        return "Brand: "+this.brand+" Type: "+this.type + " " + super.toString();
    }
}

二、添加多个Moped对象到ArrayList的实现

你可以通过循环控制录入次数,示例中先让用户输入要录入的助力车数量,再循环生成每个对象、录入信息后加入集合即可,修复后的主程序代码如下:

package app;

import java.util.ArrayList;
import java.util.Scanner;

import data.*;

public class ExtendsTest {
    // 将Scanner提为全局变量,避免每次录入都创建新对象
    private static Scanner scanner = new Scanner(System.in);

    public static void main(String[] args) {
        ArrayList<Moped> list = new ArrayList<>();
        
        // 询问用户需要录入的助力车数量
        System.out.print("请输入要录入的助力车数量:");
        int count = Integer.parseInt(scanner.nextLine());
        
        // 循环录入count个Moped对象
        for (int i = 0; i < count; i++) {
            System.out.println("=====录入第"+(i+1)+"台助力车信息=====");
            Moped mp = new Moped();
            askForMopedInfo(mp);
            // 修正变量名拼写错误
            list.add(mp);
        }
        
        System.out.println("=====录入完成,所有助力车信息如下=====");
        printMoped(list);
        scanner.close();
    }

    private static void printMoped(ArrayList<Moped> list) {
        for (int i = 0; i < list.size(); i++) {
            System.out.println("第"+(i+1)+"台:"+list.get(i));
        }
    }

    private static void askForMopedInfo(Moped mp) {
        System.out.print("Brand: ");
        String k = scanner.nextLine();
        // 修正方法名拼写错误
        mp.setBrand(k);
        
        System.out.print("Type: ");
        k = scanner.nextLine();
        mp.setType(k);
        
        System.out.print("Price: ");
        // 适配父类price的float类型,用Float做类型转换
        float price = Float.parseFloat(scanner.nextLine());
        mp.setPrice(price);
        
        System.out.print("Color: ");
        k = scanner.nextLine();
        mp.setColor(k);
        
        System.out.print("Maximum speed: ");
        int maxSpeed = Integer.parseInt(scanner.nextLine());
        mp.setMaximumSpeed(maxSpeed);
    }
}

Vehicle类本身逻辑无问题,不需要修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:48:03