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

如何在C#汽车类数据录入中避免重复ID并重新提示用户?

实现Automobile数据录入时的重复ID检测

要解决录入过程中重复ID的问题,核心是在输入ID后立即校验是否已存在,若重复则重新输入,具体实现步骤如下:

  • 拆分ID录入逻辑为循环结构,直到输入不重复的有效ID
  • 每次输入ID后,遍历已完成录入的汽车对象(数组中当前索引之前的元素),检查ID是否重复
  • 可选添加输入格式验证,确保用户输入的是符合要求的数值类型

修改后的主程序代码如下:

namespace AutomobileDemo
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Automobile[] cars = new Automobile[8];
            double totalPrices = 0;

            for (int i = 0; i < cars.Length; ++i)
            {
                cars[i] = new Automobile();
                int inputId;
                bool isDuplicate;

                // 循环获取不重复的ID
                do
                {
                    Console.Write("ID number: ");
                    // 验证输入是否为有效整数
                    while (!int.TryParse(Console.ReadLine(), out inputId))
                    {
                        Console.WriteLine("请输入有效的整数ID!");
                        Console.Write("ID number: ");
                    }

                    // 检查已录入的汽车是否存在重复ID
                    isDuplicate = false;
                    for (int j = 0; j < i; j++)
                    {
                        if (cars[j].ID == inputId)
                        {
                            isDuplicate = true;
                            Console.WriteLine("该ID已存在,请重新输入!");
                            break;
                        }
                    }
                } while (isDuplicate);

                cars[i].ID = inputId;

                // 录入其他属性并添加输入验证
                Console.Write("Make: ");
                cars[i].Make = Console.ReadLine() ?? "";

                Console.Write("Year: ");
                while (!int.TryParse(Console.ReadLine(), out int year))
                {
                    Console.WriteLine("请输入有效的年份!");
                    Console.Write("Year: ");
                }
                cars[i].Year = year;

                Console.Write("Price: ");
                while (!double.TryParse(Console.ReadLine(), out double price))
                {
                    Console.WriteLine("请输入有效的价格!");
                    Console.Write("Price: ");
                }
                cars[i].Price = price;

                totalPrices += cars[i].Price;
                Console.WriteLine();
            }

            Array.Sort(cars);

            for (int i = 0; i < cars.Length; ++i)
                Console.WriteLine(cars[i].ToString());

            Console.WriteLine("\nTotal of all prices: " + totalPrices.ToString("C"));
        }
    }
}

关键代码说明

  1. ID重复校验循环:使用do-while循环确保用户输入的ID不重复,每次输入后遍历数组中已完成录入的元素(j < i)对比ID
  2. 输入格式验证:通过int.TryParse和double.TryParse确保用户输入的是符合要求的数值类型,避免程序因输入错误崩溃
  3. 逻辑分离:将ID录入的校验逻辑独立出来,不影响其他属性的录入流程

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 18:17:00