如下数据:
TYPE productNum
001 4
002 1
003 3
004 2按顺序循环取数,每次从productNum取1,取到8的时候不再取.4 1 1 1 此时4还剩1
1 1 0
3 1 1 此时3还剩1
2 1 1最后结果如下:
TYPE productNum
001 3
001 1
002 1
003 2
003 1
004 2请问大家是怎么考虑的?
TYPE productNum
001 4
002 1
003 3
004 2按顺序循环取数,每次从productNum取1,取到8的时候不再取.4 1 1 1 此时4还剩1
1 1 0
3 1 1 此时3还剩1
2 1 1最后结果如下:
TYPE productNum
001 3
001 1
002 1
003 2
003 1
004 2请问大家是怎么考虑的?
TYPE productNum
001 4 1 1 1
002 1 1 0
003 3 1 1
004 2 1 1 这时候已经等于8了,就不往下取了.那此时4取了3次1,还剩1,3取了2次1也剩下1了.
问题1.
8是从哪里来?
问题2:
4取了3次1,还剩1,3取了2次1也剩下1了? 没明白! TYPE productNum
001 4 +1 +1 +1=7
002 1 +1+ 0=2
003 3 +1 +1=5
004 2 +1+ 1=4
LZ,你就给出,你完整最原始的数据.
然后,贴出你要的结果形式!什么取什么取的,看了N遍还是没明白!
dt.Columns.AddRange(new DataColumn[] { new DataColumn("TYPE", typeof(string)), new DataColumn("productNum", typeof(int)) });
dt.Rows.Add("001", 4);
dt.Rows.Add("002", 1);
dt.Rows.Add("003", 3);
dt.Rows.Add("004", 2);
int count = 0;
int index = 0;
while (count < 8)
{
if (Convert.ToInt32(dt.Rows[index][1]) > 0)
{
dt.Rows[index][1] = Convert.ToInt32(dt.Rows[index][1]) - 1;
count++;
}
index++;
if (index > 3)
index = 0;
}
foreach (DataRow dr in dt.Rows)
Console.WriteLine("{0}:{1}", dr[0], dr[1]);
我的原始数据是:
TYPE productNum
001 4
002 1
003 3
004 2 过程:TYPE productNum 第一次循环 第二次循环 第三次循环 剩余
001 4 1 1 1 1
002 1 1 0(此时不可能再是1了,因为原来值就是1) 0
003 3 1 1 1
004 2 1 1 0第三次循环时,已经1+1+1+1+1+0+1+1+1+1=8了,所以不往下取了.最后结果如下:
TYPE productNum
001 3
002 1
003 2
004 2
001 1
003 1
我的原始数据是:
TYPE productNum
001 4
002 1
003 3
004 2 过程: TYPE productNum 第一次循环 第二次循环 第三次循环
001 4 1 1 1
002 1 1 0(此时不可能再是1了,因为原来值就是1)
003 3 1 1
004 2 1 1 第三次循环时,已经1+1+1+1+1+0+1+1+1+1=8了,所以不往下取了. 那么001取了3次1,剩下了4-3=1,003取了2次1,剩下了3-2=1.其他都没有余下.最后结果如下:
TYPE productNum
001 3
002 1
003 2
004 2
001 1
003 1
就是遍历 001~004 的 productNum --,然后将 productNum 减去的值累加 得到一个值count(如果productNum ==0 那就不在自减,count也不累加)没做一次遍历就判断 count!=8
using System;
using System.Collections.Generic;
using System.Text;namespace consoleQueue
{
class Program
{
static void Main(string[] args)
{
Queue<int> pX = new Queue<int>();
pX.Enqueue(4);
pX.Enqueue(1);
pX.Enqueue(3);
pX.Enqueue(2);
Queue<string> pY = new Queue<string>();
pY.Enqueue("T001");
pY.Enqueue("T002");
pY.Enqueue("T003");
pY.Enqueue("T004");
int i=0;
int count=0;
string tempstr = string.Empty;
while (pX.GetEnumerator().MoveNext())
{
i= pX.Dequeue();
tempstr= pY.Dequeue(); pX.Enqueue (--i<=0?0:i);
pY.Enqueue(tempstr); if (i > 0)
{ Console.WriteLine("{0} {1}", tempstr, i); } count += i < 0 ? 0 : 1;
if (count == 8)
{ break; }
}
}
}
}
int i = 0;
foreach (DataRow dr in dt.Rows)
{
if ((int)dr[1] == 0)
{
Console.WriteLine("{0}:{1}", dr[0], temp[i]);
}
else
{
Console.WriteLine("{0}:{1}", dr[0], temp[i] - (int)dr[1]);
Console.WriteLine("{0}:{1}", dr[0], dr[1]);
}
i++;
}
最后结果如下: (原)
TYPE productNum
001 3
001 1
002 1
003 2
003 1
004 2
=>
最后结果如下: (新)
TYPE productNum
001 3
001 2
001 1
003 2
003 1
004 1