黑马程序员技术交流社区
标题:
一道练习题
[打印本页]
作者:
杨敏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….”。
string s = "2 7 8 3 22 9 5 11";
string[] strs = s.Split(' ');
ArrayList myAL = new ArrayList();
myAL.AddRange(strs);
foreach (object obj in myAL)
{
int num = (int)obj;
if (num % 2 != 0)
{
Console.Write(num);
Console.Write("\t");
}
}
foreach (object obj in myAL)
{
if ((int)obj % 2 == 0)
{
Console.Write(obj);
Console.Write("\t");
}
}
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