当前位置: 首页 > news >正文

C#练习题——List排序与反转操作详解:怪物属性排序示例

一、任务

写一个怪物类,创建10个怪物将其添加到List中对List列表进行排序,根据用户输入数字进行排序
1、攻击排序
2、防御排序
3、血量排序
4、反转


二、代码解析

1. Monster类定义

attack:攻击力defend:防御力hp:血量

一个静态字段SortType用于存储用户选择的排序类型

2. 随机生成怪物列表

使用Random类生成10个具有随机属性的怪物对象,并添加到List<Monster>集合中。

3. 排序逻辑实现

  1. 按攻击力升序排列

  2. 按防御力升序排列

  3. 按血量升序排列

  4. 翻转列表顺序

4. 比较函数详解

monsters.Sort((a, b) =>
{return a.attack > b.attack ? 1 : -1;
});
  • 返回负数表示a应该排在b前面

  • 返回正数表示a应该排在b后面

  • 返回0表示a和b相等

这种设计允许Sort方法内部算法根据比较结果确定元素的相对位置。

5. 异常处理

使用try-catch块捕获用户输入非数字时的异常,提高程序健壮性。


三、完整代码

using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Threading;
using System.Threading.Tasks;
using System.Xml.Linq;namespace 进阶测试
{class Monster{public static int SortType = 1;public int attack;public int defend;public int hp;public Monster(int attack, int defend, int hp){this.attack = attack;this.defend = defend;this.hp = hp;}public override string ToString(){return string.Format("怪物信息-血量{0}攻击力{1}防御力{2}", this.hp, this.attack, this.defend);}}class Program{static void Main(string[] args){List<Monster> monsters = new List<Monster>();Random r = new Random();for (int i = 0; i < 10; i++){monsters.Add(new Monster(r.Next(100, 201), r.Next(5, 21), r.Next(2, 10)));Console.WriteLine(monsters[i]);}Console.WriteLine("********************");try{Console.WriteLine("请输入1~4的数字进行排序");Console.WriteLine("1:按攻击力升序排列");Console.WriteLine("2:按防御力升序排列");Console.WriteLine("3:按血量序排列");Console.WriteLine("4:翻转");Monster.SortType = int.Parse(Console.ReadLine());switch (Monster.SortType){case 1:monsters.Sort((a, b) =>{return a.attack > b.attack ? 1 : -1;});break;case 2:monsters.Sort((a, b) =>{return a.defend > b.defend ? 1 : -1;});break;case 3:monsters.Sort((a, b) =>{return a.hp > b.hp ? 1 : -1;});break;case 4://翻转APImonsters.Reverse();break;}for (int i = 0; i < 10; i++){Console.WriteLine(monsters[i]);}}catch{Console.WriteLine("请输入数字");}}}
}
http://www.dtcms.com/a/403428.html

相关文章:

  • Linux离线安装指定包
  • WebGIS:在 Vue 2 项目中使用 Mapbox 时,如果需要加载的 GIS 数据量过大,怎么让接口一次性获取的geojson数据分批加载
  • 您的前端开发智能工作流待升级,查收最新 Figma2Code!
  • 多品牌集运管理的革新:易境通集运系统的一站式解决方案
  • 用dw做网站的步骤山东网站建设开发
  • Docker和K8S的区别详解
  • 高性能内存池(四)----CentralCache实现
  • Python快速入门专业版(四十四):Python面向对象基础:类与对象的创建与使用(核心概念解析)
  • 阿里云电影网站建设教程2345浏览器网址导航
  • flutter json转实体类
  • MCU内存到下载的诸多问题
  • 论文解读:利用中断隔离技术的 Linux 亚微秒响应性能优化
  • 莱芜住房和城乡建设厅网站海外代理ip
  • 服务器时间同步校准
  • 本地应用程序如何通过 VPC Endpoint 或本地网络代理访问 AWS S3
  • 基于梯度下降、随机梯度下降和牛顿法的逻辑回归MATLAB实现
  • okhttp使用指南
  • 新余专业做淘宝网站2022年最新热点素材
  • 马鞍山网站建设制作中文网站怎么做英文版
  • GeoServer安装,并发布MapBox使用的矢量切片服务(pbf格式)(基于windows操作系统,使用shape文件发布)
  • 以AI科技重塑乳业生态,以京北品质服务健康中国 链农科技总经理马旭海专访
  • VMware安装 Rocky Linux 为后续docker k8s 实验做准备 自用 实践笔记(一)
  • Pyqt6开发的可以hexo博客一键创文章,发文章,统计文章。命令包装工具。
  • 链农科技亮相龙岗万达广场:“京北助力·舞动岭南”文艺展演
  • C语言(长期更新)第23讲:编译和链接
  • 怎么做网站后端手机登录凡科网
  • 如何自查家里宽带是否有公网IPv4?就几步。
  • Android studio导入OpenCV报“Unresolved reference: android“
  • 如何管理网站域名服务器做php网站
  • (Arxiv-2025)OmniInsert:无遮罩视频插入任意参考通过扩散 Transformer 模型