题目:
一个数组有100个元素,每次移除该数组第7的整数倍元素,全部移除后,将新的数组再次移除第7的整数倍元素,如此循环下去,当最后数组内元素个数为6时终止循环,请用程序模拟实现该过程。
思路:因为数组长度固定,不能直接删除元素,所以采取用新数组存值的方式把需留下的值保存下来。代码只是简单实现了这道题,不是最好的设计。
步骤: 1、先找出对应7整数倍下标,存到新数组保存下来(将元素下标+1 除以7,若能整除,则跳过,不保存)
2、循环1的操作,。
public class Array { public static void main(String[] args) { int[] array = new int[100]; for (int i=0;i<100;i++){ array[i]=i+1; System.out.print(array[i]+","); } int[] newArray;//定义一个新数组存放元素 int delTime=1;//记录执行删除的次数 while (array.length/7 >= 1) { System.out.println(); newArray = new int[array.length - array.length / 7]; for (int i = 0, j = 0; i < array.length; i++) { if ((i + 1) % 7 != 0) { newArray[j] = array[i]; } else { continue; } System.out.print(newArray[j] + ","); j++; } System.out.println(); System.out.println("第"+ delTime++ +"次执行删除后数组长度为" + newArray.length); array = newArray;//放回原数组 } } }