public class test {
public static void main(String[] args) {
/*定义一个数组*/
int[] array = new int[]{0, 0, 5, 7, 2, 1, 0};
for (int i = 0; i < array.length; i++) {
/*获取到当前位置的数*/
int arraynow = array[i];
/*如果当前位置的数为0*/
if (arraynow == 0) {
/*如果当前的数字不是最后一位*/
if (i != array.length - 1) {
/*定义下一次非零数的位置*/
int afertNotZoreNum = 0;
for (int j = i; j < array.length; j++) {
/*遍历,起始位置是数组当前位置,如果下一个数字不是最后一位,且如果下一个数不为零*/
if (j + 1 <= array.length - 1 && array[j + 1] != 0) {
/*获取到下一个非零数字的位置*/
afertNotZoreNum = j + 1;
/*跳出循环*/
break;
}
}
/*如果下一次非零数位置不是第一位,则将当前为数=0的位置与下一非零位置 的值交换*/
if (afertNotZoreNum != 0) {
/*将当前为0的位置 赋上 下一位非零位置的值*/
array[i] = array[afertNotZoreNum];
/*将 下一位非零位置的值设成0*/
array[afertNotZoreNum] = 0;
}
}
}
}
}
}
<-私のアルゴリズムは良くありません。新しい配列を作成できない場合は、元の配列を操作する必要がある場合にのみ、この愚かな方法を思い付くことができます。コメントを歓迎します->