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

Java代码开发问题:记录奶牛产奶量并筛选极值时出现错误

奶牛周产奶量统计代码问题解决

你正在开发一段Java代码,用来记录每头奶牛每天2次、连续7天挤奶时的身份信息及产奶量,需要实现两个核心功能:

  • 找出一周内产奶量最高的奶牛
  • 筛选出所有周产奶量低于12升的奶牛

但目前你编写的简化代码运行出现错误,现有代码如下:

import java.util.Scanner;
public class test {
    public static void main(String[] args) {
        Scanner na = new Scanner(System.in);
        System.out.println("Please enter...");
    }
}

问题分析

从你给出的代码可以看到,目前只完成了最基础的Scanner初始化和提示输入的语句,核心的数据存储、产奶量录入、统计逻辑完全缺失,这不仅无法实现你想要的功能,甚至可能因为代码逻辑不完整导致运行异常。

完整解决方案代码

我帮你编写了完整的实现代码,通过封装实体类+集合管理的方式,清晰实现所有需求:

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

// 封装奶牛身份和产奶量的实体类
class Cow {
    private String cowId; // 奶牛唯一标识
    private double weeklyTotalMilk; // 一周总产奶量

    public Cow(String cowId, double weeklyTotalMilk) {
        this.cowId = cowId;
        this.weeklyTotalMilk = weeklyTotalMilk;
    }

    public String getCowId() {
        return cowId;
    }

    public double getWeeklyTotalMilk() {
        return weeklyTotalMilk;
    }
}

public class CowMilkStats {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        List<Cow> cowRecords = new ArrayList<>();

        // 先输入奶牛总数
        System.out.print("请输入需要统计的奶牛数量:");
        int totalCows = scanner.nextInt();
        scanner.nextLine(); // 处理输入后的换行符,避免后续读取异常

        // 逐头录入奶牛的一周产奶数据
        for (int i = 0; i < totalCows; i++) {
            System.out.println("\n=== 录入第" + (i + 1) + "头奶牛数据 ===");
            System.out.print("奶牛ID:");
            String id = scanner.nextLine();

            double totalMilk = 0.0;
            // 录入7天每天2次的产奶量
            for (int day = 1; day <= 7; day++) {
                System.out.println("--- 第" + day + "天数据 ---");
                for (int milkTime = 1; milkTime <= 2; milkTime++) {
                    System.out.print("第" + milkTime + "次产奶量(升):");
                    double milk = scanner.nextDouble();
                    totalMilk += milk;
                }
            }
            scanner.nextLine(); // 清除换行符

            // 将当前奶牛数据加入集合
            cowRecords.add(new Cow(id, totalMilk));
        }

        // 找出周产奶量最高的奶牛
        Cow topMilkCow = cowRecords.get(0);
        for (Cow cow : cowRecords) {
            if (cow.getWeeklyTotalMilk() > topMilkCow.getWeeklyTotalMilk()) {
                topMilkCow = cow;
            }
        }
        System.out.println("\n✅ 一周产奶量最高的奶牛:");
        System.out.println("奶牛ID:" + topMilkCow.getCowId() + ",周总产奶量:" + topMilkCow.getWeeklyTotalMilk() + "升");

        // 筛选周产奶量低于12升的奶牛
        System.out.println("\n⚠️ 周产奶量低于12升的奶牛:");
        boolean hasLowMilkCow = false;
        for (Cow cow : cowRecords) {
            if (cow.getWeeklyTotalMilk() < 12) {
                hasLowMilkCow = true;
                System.out.println("奶牛ID:" + cow.getCowId() + ",周总产奶量:" + cow.getWeeklyTotalMilk() + "升");
            }
        }
        if (!hasLowMilkCow) {
            System.out.println("没有符合条件的奶牛");
        }

        scanner.close();
    }
}

代码说明

  • 实体类封装:用Cow类把奶牛的ID和周产奶量绑定,让代码结构更清晰,便于维护
  • 集合管理:使用ArrayList存储所有奶牛的数据,方便后续遍历统计
  • 数据录入:通过嵌套循环实现7天每天2次的产奶量录入,自动累加得到周总产奶量
  • 统计逻辑:遍历集合分别找出最高产奶量的奶牛,以及筛选出低产奶量的奶牛

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:29:47