c#问题求大神解答

2025-12-17 14:45:42
推荐回答(1个)
回答1:

你好,软糖来帮一下把,代码已完成且通过测试。

效果图

座椅类

    public class 座椅   {
        public 座椅(int v号码,int v背套颜色) { 号码 = v号码; 背套颜色 = v背套颜色; }
        public int 号码;
        public static string[] 背套颜色名称 = { "未知", "红色", "蓝色", "绿色" };
        public int 背套颜色 = 0; //该数字表示第几号颜色

        public void 更换背套颜色() {
            if (背套颜色 == 0) { 背套颜色 = 1; return; }
            if (背套颜色 == 1) { 背套颜色 = 2; return; }
            if (背套颜色 == 2) { 背套颜色 = 3; return; }
            if (背套颜色 == 3) { 背套颜色 = 0; return; }
        }
        public override string ToString() {
            return string.Format("{0}号座椅({1})", 号码, 背套颜色名称[背套颜色]);
        }
    }

车厢类:带迭代器接口的

    public class 车厢 : IEnumerable {
        public List<座椅> 座椅集合 = new List<座椅>();

        //迭代器
        IEnumerator IEnumerable.GetEnumerator() {
           return 座椅集合.GetEnumerator();
        }
        public 座椅 this[int 序号] {
            get {
                return 座椅集合.First(匹配座椅 => 匹配座椅.号码 == 序号);
            }
        }
        /// 返回所有所有偶数号座椅
        public List<座椅> 所有偶数号座椅() {
            return 座椅集合.FindAll(匹配座椅 => (匹配座椅.号码 % 2) == 0);
        }
        public List<座椅> 更换偶数号座椅背套颜色() {
            var 符合条件的座椅 = 所有偶数号座椅();
            foreach (var 座椅 in 符合条件的座椅)
            {
                座椅.更换背套颜色();
            }
            return 符合条件的座椅;
        }
    }

控制台主程序

    class Program {
        static void Main(string[] args) {
            var 车厢 = new 车厢();
            车厢.座椅集合.Add(new 座椅(1, 1));
            车厢.座椅集合.Add(new 座椅(2, 1));
            车厢.座椅集合.Add(new 座椅(3, 1));
            车厢.座椅集合.Add(new 座椅(4, 2));
            车厢.座椅集合.Add(new 座椅(5, 2));
            车厢.座椅集合.Add(new 座椅(6, 2));
            //显示所有座椅的编号和颜色
            Console.WriteLine("火车车厢所有座椅:");
            foreach (var 座椅 in 车厢.座椅集合)
            {
                Console.WriteLine(座椅.ToString()); 
            }
            //更换偶数号座椅背套颜色
            Console.WriteLine("按任意键继续 - 更换偶数号座椅背套颜色: ");
            Console.ReadKey(true);

            //显示更换过座椅的编号和颜色
            var 更换过的座椅 = 车厢.更换偶数号座椅背套颜色();
            Console.WriteLine("火车车厢更换过的座椅:");
            foreach (var 座椅 in 更换过的座椅)
            {
                Console.WriteLine(座椅.ToString());
            }
            
            Console.WriteLine();
            Console.WriteLine("按回车键结束...");
            Console.ReadLine();
        }
    }

满意请采纳,谢谢~~~