【发布时间】:2012-01-07 05:21:30
【问题描述】:
我使用此代码将数组调整为新大小:
我想得到一个 int 数组,然后返回由 Lastarray 的 Items 平均值得出的具有新大小的新数组。 (例如将图像调整为新大小)
private int[] ResizeArray(int[] LastArray, int NewSize)
{
if (LastArray.GetUpperBound(0) == (NewSize-1))
{
return LastArray;
}
int i = 0;
int j = 0;
int c = 0;
int[] NewArray = new int[NewSize];
for (i = 1; i < NewSize; i++)
{
c = 0;
for (j = (int)(i * ((double)LastArray.GetUpperBound(0) / (NewSize))); j <= ((i + 1) * ((double)LastArray.GetUpperBound(0) / (NewSize)) - 1); j++)
{
c += LastArray[j];
}
NewArray[i] = (int)(c / ((double)LastArray.Length / (NewSize)));
}
return NewArray;
}
但有时它会返回不合理的数字! 像这样:
最后一个数组: 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365 365
新数组: 0 421 280 421 280 421 280 421 421 280 421 280 421 280 421 421 280 421 280 421 280 421 421 280 421 280 421 280 421 421
另一个 Last 数组: 83 84 89 90 91 92 93 94 95 96 97 99 100 101 102 104 105 106 109 111 112 114 116 118 120 121 123 125 127 128 130 132 133 134 136 137 138 140 141 142 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181
另一个新数组: 0 103 71 109 75 116 80 125 131 91 141 98 151 103 159 164 111 170 115 176 119 182 185 125 191 129 197 133 203 206
【问题讨论】:
-
是否仅用于数组调整大小?看起来你也在做一些我不遵循的平均操作。你能详细说明你想要达到的目标吗?
-
@ahmadali 所以你想调整数组的大小并用平均项目填充元素(平均哪些项目是
newSize)? -
@fardjad:是的,但是这段代码没有返回真正的数组
-
为什么不使用 Array.Resize? msdn.microsoft.com/en-us/library/1ffy6686%28v=vs.85%29.aspx
-
@Scott:它只是返回新数组,包括从 0 到 NewSize 的 Last 数组项。没有得到平均!!!