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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨敏Yummy 中级黑马   /  2013-10-24 10:13  /  1490 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨敏Yummy 于 2013-10-24 12:42 编辑

有一个字符串是用空格分隔的一系列整数,写一个程序把其中的整数做如下重新排列打印出来:奇数显示在左侧、偶数显示在右侧。比如”2 7 8 3 22 9 5 11”显示成”7 3 9 2 8 22….”。
  1.             string s = "2 7 8 3 22 9 5 11";
  2.             string[] strs = s.Split(' ');
  3.             ArrayList myAL = new ArrayList();
  4.             myAL.AddRange(strs);

  5.             foreach (object obj in myAL)
  6.             {
  7.                 int num = (int)obj;
  8.                 if (num % 2 != 0)
  9.                 {
  10.                     Console.Write(num);
  11.                     Console.Write("\t");
  12.                 }
  13.             }
  14.             foreach (object obj in myAL)
  15.             {
  16.                 if ((int)obj % 2 == 0)
  17.                 {
  18.                     Console.Write(obj);
  19.                     Console.Write("\t");
  20.                 }
  21.             }
  22.             Console.ReadKey();
复制代码
编译时的错误是 int num = (int)obj;
抛出InvalidCastException,不知道这个拆箱过程错在哪?

评分

参与人数 1技术分 +1 收起 理由
茹化肖 + 1

查看全部评分

4 个回复

倒序浏览
把(int)obj换成 Convert.ToInt32(obj)

点评

Thanks  发表于 2013-10-24 12:44

评分

参与人数 1技术分 +1 收起 理由
茹化肖 + 1

查看全部评分

回复 使用道具 举报 1 0
那一步,你用GetType看一下你的obj类型是System.String,
string和int类型不能直接转换,要用方法来进行。
换句话说。那行代码换成这个:

                int num = Convert.ToInt32(obj);

点评

many thanks, 自己看错了,把string当成值类型来用了  发表于 2013-10-24 12:44

评分

参与人数 1技术分 +1 收起 理由
茹化肖 + 1

查看全部评分

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