我有一个零值的数组,我希望将此数组复制到其他数组但没有零值。如果无法确定数组大小,我怎么能这样做,因为我不知道有多少个零。请注意,由于原因,我 无法使用List或ArrayList 。
// frame is the original array
final int[] sorted = new int[??];
for (int i = 0; i < frame.length; i++) {
if (frame[i] != 0) {
sorted[i] = frame[i];
}
}
答案 0 :(得分:1)
如果必须使用数组,则可以执行此操作:
int j = 0;
for (int i = 0; i < frame.length; i++) {
if (frame[i]!=0) {
j++
}
}
final int[] sorted = new int[j];
j = 0;
for (int i = 0; i < frame.length; i++) {
if (frame[i]!=0) {
sorted[j] = frame[i];
j++;
}
}
答案 1 :(得分:1)
我知道如何使用给定的约束条件执行此操作的唯一方法是首先计算,处理下一步:
unsigned int nonZeroCount = 0;
// Count the amount of non-zero values
for (int i = 0; i < frame.length; i++){
if (frame[i]!=0)
nonZeroCount++;
}
// Create the NEW Array
final int[] sorted = new int[nonZeroCount];
// NEXT add them to your new array, Need to have 2 separate counters, 1 for your initial array,
// Another for where you are placing it within your new array
unsigned int anotherCount = 0;
for (int i = 0; i < frame.length; i++){
if (frame[i]!=0){
sorted[anotherCount ] = frame[i];
anotherCount++;
}
}
答案 2 :(得分:1)
尝试以下方法:
String validNumbers = "";
for (int i = 0; i < frames.length; i++) {
if (frames[i] != 0)
validNumbers += (i > 0 ? ";": "")+frames[i];
}
String sorted[] = validNumbers.split(";");
这样,你将拥有一个String
数组,其数字不同于0;
答案 3 :(得分:0)
我不太了解零。
那你为什么不喜欢?
int counter = 0;
for (int i = 0; i < frame.length; i++) {
if (frame[i]==0){
counter++;
}
}
答案 4 :(得分:0)
您可以创建一个与您测试的数组大小相同的新数组。之后,您遍历数组,并为找到的每个非零值添加它,同时增加一个计数器,该计数器将表示找到的非零元素的数量。在此之后,您可以使用它来创建一个新数组来复制您的值,或者在迭代新数组时将计数器简单地用作上限。
答案 5 :(得分:0)
int noneZeroCount= 0;
for (int i = 0; i < frame.length; i++) {
if (frame[i]!=0) {
noneZeroCount++;
}
}
final int[] sorted = new int[noneZeroCount];
// You got size of non zero elements in array now run copy loop