我有用户在textBox3中输入的数字,我将它们转换为数组nums现在我想将其中一半放入arraylist A中,其中一半放在arraylist B中我该怎么做?谢谢
string[] source = textBox3.Text.Split(',');
int[] nums = new int[source.Length];
for (int i = 0; i < source.Length; i++)
{
nums[i] = Convert.ToInt32(source[i]);
}
ArrayList A = new ArrayList();
ArrayList B = new ArrayList();
编辑:
谢谢,我测试了你的答案,但你输出的所有代码都是system.collection.generic [system.int32],问题是什么?谢谢
例如,我测试了ArsenMkrt写道: private void button1_Click(object sender, EventArgs e)
{
string[] source = textBox3.Text.Split(',');
int[] nums = new int[source.Length];
List<int> A = nums.Take(source.Length/2).ToList();
List<int> B = nums.Skip(source.Length/2).ToList();
MessageBox.Show(B.ToString());
}
答案 0 :(得分:5)
由于拳击问题,不建议使用数组列表,因此请使用列表:
List<int> lst1 = new List<int>();
lst1.AddRange(nums.Skip(nums.Length/2));
List<int> lst2 = new List<int>();
lst2.AddRange(nums.Take(nums.Length / 2));
第一个列表包含长度/ 2到长度,第二个列表包含第一个项目到长度/ 2
修改:请参阅101 linq sample了解与linq的对比。
编辑:用于显示列表中的项目应该遍历列表,list.ToString()返回列表类型请参阅MSDN ToString而不是项目,因此您应该覆盖它并使用您的特定列表或者做:
foreach (var i in lsss)
{
MessageBox.Show(i.ToString());
}
或者
lst1.ForEach(x=>MessageBox.Show(x.ToString()));
或者
string strList = "";
lst1.ForEach(x => strList += x + " , ");
MessageBox.Show(strList);
答案 1 :(得分:1)
string[] source = textBox3.Text.Split(',');
var nums = source.Select(s=>Convert.ToInt32(s));
ArrayList A = new ArrayList(nums.Take(source.Length/2));
ArrayList B = new ArrayList(nums.Skip(source.Length/2));
或者要使用值类型更快的通用List,可以编写
List<int> A = nums.Take(source.Length/2).ToList();
List<int> B = nums.Skip(source.Length/2)).ToList();
答案 2 :(得分:1)
for (int i = 0; i < nums.Length; i++)
{
if(i < nums.Length / 2) A.Add(nums[i]);
else B.Add(nums[i]);
}
这适用于所有.NET。考虑使用通用List<int>
,您将避免装箱/取消装箱,并可能InvalidCastException
。
答案 3 :(得分:1)
ArrayList A = new ArrayList();
ArrayList B = new ArrayList();
for (int i = 0; i < source.Length; i++)
{
if(i % 2 == 1)
A.Add(Convert.ToInt32(source[i]));
else
B.Add(Convert.ToInt32(source[i]));
}
答案 4 :(得分:1)
假设数组长度为偶数
ArrayList A = new ArrayList();
ArrayList B = new ArrayList();
int backword = source.Length / 2;
int forward = 0;
for (int i = 0; i < source.Length/2; i++)
{
A.Add(Convert.ToInt32(source[++forward]));
A.Add(Convert.ToInt32(source[++backword]));
}