A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 邓明 中级黑马   /  2014-6-5 15:24  /  1240 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 邓明 于 2014-6-5 15:27 编辑

我在学习数组的时候也在参考其他相关书籍同步在学,其中有关于多维数组的部分我遇到了这样的一个练习,与大家分享,并且有几个问题想请教下:
题目的大意是这样的:有几本图书,我们知道书名、价格和作者,需要编写段代码按照分别按照书名、价格、作者姓名进行排序,并显示出排序结果。
我的思路是这样的:构建多维数组,然后根据不同的排序方式调用不同的方法来进行排序,具体代码如下:
Book类:
  1. <p>
  2. <p class="blockcode">class Book
  3.     {
  4.         //图书的属性
  5.         public string strName;//书名
  6.         public double dblPrice;//价格
  7.         public string strAuthor;//作者</p><p> </p><p>       public Book(string _strName, double _dblPrice, string _strAuthor)
  8.         {
  9.             this.strName = _strName;
  10.             this.dblPrice = _dblPrice;
  11.             this.strAuthor = _strAuthor;
  12.         }</p></p>
复制代码
BookList类:
  1. <p><p>    class BookList
  2. {
  3.          /// <summary>
  4.          /// 按照书名显示一个图书数组中的多本图书
  5.         /// </summary>
  6.          /// <param name="arrBooks">图书数组</param></p><p></p><p>         public static void DisplayByName(Book[] arrBooks)
  7.         {
  8.                //获取图书数量,用于动态建立“书名”数组
  9.                int bookNumber = arrBooks.GetUpperBound(0) - arrBooks.GetLowerBound(0) + 1;</p><p></p><p>               //用CreateInstance方法动态建立“书名”数组
  10.                int[] lengths = new int[] { bookNumber };
  11.                 int[] lowerBounds = new int[] { 0 };
  12.                Array arrNames=Array.CreateInstance(Type.GetType("System.String"),lengths,lowerBounds);
  13.                //为“书名”赋值
  14.                for (int i = arrBooks.GetLowerBound(0); i <= arrBooks.GetUpperBound(0); i++)
  15.                 {
  16.                         arrNames.SetValue(arrBooks[i].strName, i);
  17.                }
  18.                //对于arrBooks数组针对书名arrNames关键字进行排序
  19.                Array.Sort(arrNames, arrBooks);
  20.                //对排序完成后的arrBooks数组将各个元素显示和输出
  21.                foreach (Book item in arrBooks)
  22.                 {
  23.                         Console.WriteLine("{0} {1} {2}", item.strName, item.dblPrice, item.strAuthor);
  24.                 }
  25.          }

  26.         /// <summary>
  27.         /// 按照图书价格显示多本图书
  28.         /// </summary>
  29.          /// <param name="arrBooks">图书数组</param>
  30.          public static void DisplayByPrice(Book[] arrBooks)
  31.         {
  32.             //获取图书数量,用于动态建立“价格”数组
  33.            int bookNumber = arrBooks.GetUpperBound(0) - arrBooks.GetLowerBound(0) + 1;
  34.            //用CreateInstance方法动态建立“价格”数组
  35.            int[] lengths = new int[] { bookNumber };
  36.             int[] lowerBounds = new int[] { 0 };
  37.             Array arrPrice = Array.CreateInstance(Type.GetType("System.Double"), lengths, lowerBounds);

  38.           //为“价格”赋值
  39.           for (int i = arrBooks.GetLowerBound(0); i <= arrBooks.GetUpperBound(0); i++)
  40.            {
  41.                          arrPrice.SetValue(arrBooks[i].dblPrice, i);
  42.            }
  43.           //对于arrBooks数组针对价格arrPrice关键字进行排序
  44.           Array.Sort(arrPrice, arrBooks);
  45.           //对排序完成后的arrBooks数组将各个元素显示和输出
  46.           foreach (Book item in arrBooks)
  47.           {
  48.               Console.WriteLine("{0} {1} {2}", item.strName, item.dblPrice, item.strAuthor);
  49.           }
  50.       }

  51.       /// <summary>
  52.       /// 按照图书作者显示多本图书
  53.       /// </summary>
  54.       /// <param name="arrBooks">图书数组</param>
  55.       public static void DisplayByAuthor(Book[] arrBooks)
  56.       {
  57.           //获取图书数量,用于动态建立“作者”数组
  58.           int bookNumber = arrBooks.GetUpperBound(0) - arrBooks.GetLowerBound(0) + 1;
  59.           //用CreateInstance方法动态建立“作者”数组
  60.           int[] lengths = new int[] { bookNumber };
  61.           int[] lowerBounds = new int[] { 0 };
  62.           Array arrAuthor = Array.CreateInstance(Type.GetType("System.String"), lengths, lowerBounds);
  63.           //为“作者”赋值
  64.           for (int i = arrBooks.GetLowerBound(0); i <= arrBooks.GetUpperBound(0); i++)
  65.           {
  66.               arrAuthor.SetValue(arrBooks[i].strAuthor, i);
  67.           }
  68.           //对于arrBooks数组针对作者arrAuthor关键字进行排序
  69.           Array.Sort(arrAuthor, arrBooks);
  70.           //对排序完成后的arrBooks数组将各个元素显示和输出
  71.           foreach (Book item in arrBooks)
  72.           {
  73.               Console.WriteLine("{0}{1}{2}", item.strName, item.dblPrice, item.strAuthor);
  74.           }
  75.       }
  76. }</p></p>
复制代码

评分

参与人数 1技术分 +2 收起 理由
czwanglei + 2 鼓励一下

查看全部评分

1 个回复

倒序浏览
顶                              
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马