如何输出奇数和偶数的数字列表? C#

时间:2012-10-26 00:48:09

标签: c# arrays

我可能会离开这里,但是当我修改它时,MS网站上的这段代码对我不起作用。对不起,差不多凌晨2点。 int应该是什么变量?程序崩溃说明“指定的演员表无效。”

ArrayList OddEven = new ArrayList();

            foreach (int i in lbList.Items)
            OddEven.Add(i);
            foreach (int i in OddEven)
            {
                if (i % 2 == 0)
                    lbEven.Items.Add(i);
                else
                    lbOdd.Items.Add(i);
            }

4 个答案:

答案 0 :(得分:1)

lbList.Items可能是strings,并且不存在对int的隐式转换。
试试这个:

ArrayList OddEven = new ArrayList();

foreach (var i in lbList.Items)
  OddEven.Add(int.Parse(i.ToString()));

foreach (int i in OddEven)
{
  if (i % 2 == 0)
    lbEven.Items.Add(i);
  else
    lbOdd.Items.Add(i);
}

答案 1 :(得分:0)

假设lbList,lbEven和lbOdd是ListBoxes,您似乎正在尝试将ListBoxItem转换为int。我很惊讶这甚至编译,因为Items集合的Add()方法采用新的ListBoxItem或字符串,而不是int。你需要发布更多信息。话虽如此,使用模运算符的基本逻辑是正确的,你只是试图将输出填充到错误的东西。您希望如何显示输出?

答案 2 :(得分:0)

我假设您的lbList是ListBox或DropdownList

foreach (ListItem item in lbList.Items)
{
     int i = int32.Parse(item.Text);
     if (i % 2 == 0)
        lbEven.Items.Add(i);
     else
        lbOdd.Items.Add(i);
}

更新

在Winforms中,ListBox.Items返回ObjectCollection,列表中的每个项目都为Object

foreach (object item in lbList.Items)
{
     int i = Convert.ToInt32(item);
     if (i % 2 == 0)
        lbEven.Items.Add(i);
     else
        lbOdd.Items.Add(i);
}

您也可以

foreach (var item in lbList.Items)
{
     int i = Convert.ToInt32(item);
     if (i % 2 == 0)
        lbEven.Items.Add(i);
     else
        lbOdd.Items.Add(i);
}

答案 3 :(得分:0)

试试这个,

lbList.Items.ToList<string>().ForEach(item => 
     {
        int i = Convert.ToInt32(item);
        if (i % 2 == 0)
            lbEven.Items.Add(i);
        else
            lbOdd.Items.Add(i);
    });