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

Java汽车信息ArrayList程序语句顺序错误排查求助

问题分析与修复方案

核心错误:输出顺序颠倒且重复打印总数

你的代码将打印车辆总数的语句放在了遍历车辆的for循环内部,导致每输出一辆车就重复打印一次总数,且输出顺序是先车辆信息、后总数,完全不符合先输出总数、再依次输出车辆列表的要求。

其他潜在问题

  1. Car类构造函数逻辑无效:构造函数里this.make = make;属于无效自赋值,未完成初始化(虽然后续set方法能覆盖,但写法不规范)。
  2. 输入处理逻辑漏洞:当前代码会先把未赋值的Car对象加入列表,再读取型号,若此时输入-1退出,列表会混入无效的空Car对象。
  3. 输入判断不匹配:scan.hasNext()配合scan.nextLine()容易出现换行符残留问题,更适合用scan.hasNextLine()匹配行输入场景。

修复后的代码

Main类修复版

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        List<Car> cars = new ArrayList<>();
        
        while (scan.hasNextLine()) {
            String make = scan.nextLine();
            if ("-1".equals(make)) break;
            
            String model = scan.nextLine();
            if ("-1".equals(model)) break;
            
            // 先完成属性赋值,再将有效对象加入列表
            Car car = new Car();
            car.setMake(make);
            car.setModel(model);
            cars.add(car);
        }
        scan.close();
        
        // 先打印总数,再遍历输出车辆信息
        System.out.format("There are %d cars%n", cars.size());
        for (Car car : cars) {
            System.out.println(car.getMake() + " " + car.getModel());
        }
    }
}

Car类修复版

public class Car {
    private String make;
    private String model;

    // 空构造函数移除无效赋值
    public Car() {}

    // 可选:增加带参构造函数,简化对象创建
    public Car(String make, String model) {
        this.make = make;
        this.model = model;
    }

    public String getMake() {
        return make;
    }
    public void setMake(String make) {
        this.make = make;
    }

    public String getModel() {
        return model;
    }
    public void setModel(String model) {
        this.model = model;
    }
}

修复说明

  1. 调整输出逻辑:将打印总数的语句移至for循环外部,且放在车辆列表输出之前,保证输出顺序符合需求。
  2. 优化输入流程:先读取完整的品牌和型号,确认有效后再创建并赋值Car对象,避免无效对象进入列表。
  3. 修正构造函数:移除无效自赋值代码,可选增加带参构造函数提升代码简洁性。
  4. 匹配输入场景:用scan.hasNextLine()替代scan.hasNext(),更适配逐行输入的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 01:17:35