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

如何利用存储动物正常体温的二维数组遍历判断导入数据的异常值?

动物园动物体温异常检测实现方案

首先你的NormalValues方法存在两处问题:一是参数iArray未被使用,二是返回values.ToString()只会得到数组的类型名称(如System.Object[,]),无法获取实际的正常体温数据。我们先修正这个方法,再完成后续的遍历对比逻辑。

步骤1:修正正常体温数组方法

修改方法,让它直接返回存储动物名称和正常体温的二维数组:

// 返回动物园动物的正常体温二维数组
private object[,] GetAnimalNormalTemperatures()
{
    return new object[,]
    {
        {"Zebra", 129.5},
        {"Unicorn", 54.9},
        {"Platypus", 12.19},
        {"Dragon", 999.98},
        {"Elephant", 103.66},
        {"Manticore", .035},
        {"Duck", 1.34},
        {"Basilisk", 45.2},
        {"Sphinx", 8.00},
        {"Tiger", 3.21}
    };
}

步骤2:导入文件数据到列表

假设你的.txt文件每行格式为动物名称,测量体温(例如Zebra,130.2),可以用以下代码读取并存储到强类型列表中:

// 用于存储单条体温测量数据的类
public class AnimalTemperatureReading
{
    public string AnimalName { get; set; }
    public double MeasuredTemperature { get; set; }
}

// 读取指定文件并转换为测量数据列表
private List<AnimalTemperatureReading> ImportTemperatureData(string filePath)
{
    var readings = new List<AnimalTemperatureReading>();
    foreach (var line in File.ReadAllLines(filePath))
    {
        var parts = line.Split(',');
        if (parts.Length == 2 && double.TryParse(parts[1], out double temp))
        {
            readings.Add(new AnimalTemperatureReading
            {
                AnimalName = parts[0].Trim(),
                MeasuredTemperature = temp
            });
        }
    }
    return readings;
}

步骤3:遍历对比,找出异常数据

遍历导入的测量列表,与二维数组中的正常值匹配,判断体温是否异常:

private void CheckForTemperatureAbnormalities()
{
    // 获取正常体温数组
    var normalTemps = GetAnimalNormalTemperatures();
    // 导入测量数据(实际使用时可替换为文件选择对话框获取路径)
    var measuredReadings = ImportTemperatureData("你的文件路径.txt");

    Console.WriteLine("体温异常的动物记录:");
    // 遍历每条测量数据
    foreach (var reading in measuredReadings)
    {
        double normalTemp = -1;
        // 在二维数组中查找对应动物的正常体温
        for (int i = 0; i < normalTemps.GetLength(0); i++)
        {
            if (normalTemps[i, 0].ToString() == reading.AnimalName)
            {
                normalTemp = Convert.ToDouble(normalTemps[i, 1]);
                break;
            }
        }

        // 判断并输出异常结果
        if (normalTemp != -1)
        {
            if (reading.MeasuredTemperature != normalTemp)
            {
                var status = reading.MeasuredTemperature > normalTemp ? "高于" : "低于";
                Console.WriteLine($"{reading.AnimalName}: 测量体温{reading.MeasuredTemperature},{status}正常值{normalTemp}");
            }
        }
        else
        {
            Console.WriteLine($"{reading.AnimalName}: 未找到对应的正常体温数据");
        }
    }
}

优化建议:提升查找效率

如果动物数量较多,建议将二维数组转换为Dictionary<string, double>,把查找时间复杂度从O(n)降到O(1):

// 将二维数组转换为字典,方便快速查找
private Dictionary<string, double> GetAnimalNormalTempDictionary()
{
    var normalTemps = GetAnimalNormalTemperatures();
    var tempDict = new Dictionary<string, double>();
    for (int i = 0; i < normalTemps.GetLength(0); i++)
    {
        tempDict.Add(normalTemps[i, 0].ToString(), Convert.ToDouble(normalTemps[i, 1]));
    }
    return tempDict;
}

使用字典后的对比逻辑更简洁:

var normalTempDict = GetAnimalNormalTempDictionary();
foreach (var reading in measuredReadings)
{
    if (normalTempDict.TryGetValue(reading.AnimalName, out double normalTemp))
    {
        if (reading.MeasuredTemperature != normalTemp)
        {
            var status = reading.MeasuredTemperature > normalTemp ? "高于" : "低于";
            Console.WriteLine($"{reading.AnimalName}: 测量体温{reading.MeasuredTemperature},{status}正常值{normalTemp}");
        }
    }
    else
    {
        Console.WriteLine($"{reading.AnimalName}: 未找到对应的正常体温数据");
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 01:46:47