黑马程序员技术交流社区

标题: 一道练习题 [打印本页]

作者: 杨敏Yummy    时间: 2013-10-24 10:13
标题: 一道练习题
本帖最后由 杨敏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,不知道这个拆箱过程错在哪?
作者: 猫咪不吃糖    时间: 2013-10-24 10:44
把(int)obj换成 Convert.ToInt32(obj)
作者: haxyek    时间: 2013-10-24 10:49
那一步,你用GetType看一下你的obj类型是System.String,
string和int类型不能直接转换,要用方法来进行。
换句话说。那行代码换成这个:

                int num = Convert.ToInt32(obj);





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2