首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

循环数组解决思路

2012-05-20 
循环数组已知一个数组 byte[] aanew byte[]{dd,ss,dd,ss,dd,ssx,xx}//这个并卜是固定的啊 这样写只是举

循环数组
已知一个数组 byte[] aa=new byte[]{dd,ss,dd,ss,dd,ssx,xx};//这个并卜是固定的啊 这样写只是举个小例子
 把这个数组循环放到 byte[] bb=new byte[100];中去 
最后bb数组的结果为{dd,ss,dd,ss,dd,ssx,xx,dd,ss,dd,ss,dd,ssx,xx,dd,ss,dd,ss,dd,ssx,xx.....} 


[解决办法]
lz真富,给分不少。
[解决办法]
循环 aa,然后 放到 bb指定的位置

for(int i=0;i<aa.Length;i++)
{
bb[i] = aa[i];
}
[解决办法]

C# code
            int l = aa.Count();            for (int i = 0; i < bb.Count(); i++)            {                bb[i] = aa[i%l];            }
[解决办法]
C# code
        byte[] a = new byte[] { 1, 2, 3, 4, 5 };        byte[] b = new byte[100];        for (int i = 0, t = 0; i < b.Length; i++)        {            if (i % a.Length == 0)                t = 0;            b[i] = a[t++];        }
[解决办法]
你得知道dd,ss,dd,ss,dd,ssx,xx每个的长度才能控制吧
[解决办法]
byte[] aa = new byte[7] { 1,2,3, 4,5,6,7 };//范围是0 到 255
byte[] demo = new byte[100];
int i = 0;
for (int j = 0; j < demo.Length; j++)
{
if (i == aa.Length - 1)
{
i = 0;
}
demo[j] = aa[i];
i++;
}
[解决办法]
不是很清楚你的处理过程

不知道你后面不足的那块这么处理,是补0,还是不补,还是继续填充原始数组的一部分

不过大体思路其实,就是不停拼接原始数组,只到超出长度,然后Array.copy给目标数组就ok了
[解决办法]
探讨

C# code
byte[] a = new byte[] { 1, 2, 3, 4, 5 };
byte[] b = new byte[100];
for (int i = 0, t = 0; i < b.Length; i++)
{
if (i % a.Length == 0)
……

[解决办法]
楼上那么多正解!
[解决办法]
假设不足的部分不做处理,直接Array.copy即可
C# code
  byte[] a = new byte[] { 1, 2, 3, 4, 5 };            byte[] b = new byte[100];            for (int i = 0; i < 100/a.Length; i++)            {                Array.Copy(a, 0, b, i * a.Length, a.Length);                            }
[解决办法]
C# code
  byte[] a = new byte[] { 1, 2, 3 };            byte[] b = new byte[100];            for (int i = 0; i < 100/a.Length; i++)            {                Array.Copy(a, 0, b, i * a.Length, a.Length);                            }                    //如果你后面还要继续填充,但是又保证不超索引的话则可以继续处理一下            int m = 100 % a.Length;            Array.Copy(a, 0, b, 100 - m, m);
[解决办法]
byte[] a = new byte[] { 1, 2, 3, 4, 5 };
byte[] b = new byte[100];
for (int i = 0, t = 0; i < b.Length; i++)
{
if (i % a.Length == 0)
t = 0;
b[i] = a[t++];
}
[解决办法]
byte[] a = new byte[] { 1, 2, 3, 4, 5 };
byte[] b = new byte[100];
for (int i = 0, t = 0; i < b.Length; i++)


{
if (i % a.Length == 0)
t = 0;
b[i] = a[t++];
}
[解决办法]
如果是每隔两个一加入呢 使其结果为

脑袋转个弯,就ok了

为啥一定要想成是隔两个加入呢?你为啥不能想成原始数组本来前面就带两个0呢?
byte[] a = new byte[] { 1, 2, 3, 4, 5 };
byte[] b = new byte[100];



for (int i = 0; i < 100/a.Length+2; i++)
{
Array.Copy(a, 0, b, i * a.Length+2, a.Length);

}
[解决办法]
好像回复又被csdn给吞了
[解决办法]
byte[] a = new byte[] { 1, 2, 3,4,5 };
byte[] b = new byte[100];
for(int i = 0; i< 100;)
{
Array.Copy(a, 0, b, i, a.Length);
i += a.Length;
}
[解决办法]
Array.Copy
[解决办法]
唉,回复被csdn吃了,我再发一遍把
如果是每隔两个一加入呢

请转换你的思维,为啥一定要想成每隔2个加入呢?为啥不想成原始数组前面2位是空的呢??



byte[] a = new byte[] { 1, 2, 3, 4, 5 };
byte[] b = new byte[100];
for (int i = 0; i < 100/(a.Length+2) ; i++)
{
Array.Copy(a, 0, b, i * (a.Length+2) , a.Length);

}
[解决办法]
byte[] aa = new byte[7] { 1,2,3, 4,5,6,7 };//范围是0 到 255
byte[] demo = new byte[100];
int i = 0;
for (int j = 0; j < demo.Length; j++)
{
if (i == aa.Length - 1)
{
i = 0;
}
demo[j] = aa[i];
i++;
}
其实就是个循环啊,进来打酱油

热点排行