Java 是否从数组中删除每三个元素? 公共静态int[]复制(int[]arr,int n){ int[]temp=新int[arr.length]; int电流=0; 整数计数=0; 对于(int i=0;i0){ 温度[计数]=当前值; } } int[]白名单=新int[count]; 系统阵列复制(临时,0,白名单,0,计数); 返回白名单; }

Java 是否从数组中删除每三个元素? 公共静态int[]复制(int[]arr,int n){ int[]temp=新int[arr.length]; int电流=0; 整数计数=0; 对于(int i=0;i0){ 温度[计数]=当前值; } } int[]白名单=新int[count]; 系统阵列复制(临时,0,白名单,0,计数); 返回白名单; },java,arrays,Java,Arrays,我想要一个每n个元素都被删除的数组。如果n是3并且arr={1,2,3,4,5,6,7} 期望的输出是{1,2,4,5,7} 我似乎无法让这个代码正常工作。我知道如何使用列表来做到这一点,但我想找到一种方法来做到这一点,而不导入任何内容 你必须这么做 如果(计数%n!=0)您无法从基本Java数组中删除元素。您可以使用各种集合和ArrayList来代替。但是使用commons.langs.ArrayUtils可以按如下方式执行: public static int[] replicate(int

我想要一个每n个元素都被删除的数组。如果n是3并且arr={1,2,3,4,5,6,7} 期望的输出是{1,2,4,5,7} 我似乎无法让这个代码正常工作。我知道如何使用列表来做到这一点,但我想找到一种方法来做到这一点,而不导入任何内容

你必须这么做


如果(计数%n!=0)
您无法从基本Java数组中删除元素。您可以使用各种集合和ArrayList来代替。但是使用commons.langs.ArrayUtils可以按如下方式执行:

public static int[] replicate(int[] arr, int n) {
int[] temp = new int[arr.length];
int current=0;

int count = 0;
for (int i = 0; i < arr.length; i++) {
    if (count/n!=0){
    current = arr[i];
    count++;
    }
    if(count > 0 ){

    temp[count] = current;

    }
}

int[] whitelist = new int[count];

System.arraycopy(temp, 0, whitelist, 0, count);

return whitelist;
 }
int[]arr={1,2,3,4,5,6,7};
对于(int i=0;i
试试这个:

   int[] arr = {1, 2, 3, 4, 5, 6, 7};

    for (int i = 0; i < arr.length; i++) {
        if ((i + 1) % 3 != 0) {
           arr=ArrayUtils.removeElement(arr, i);
        }
    }

它创建一个长度合适的新数组,迭代原始数组的所有元素,并且仅当它们的索引是n的精确倍数时才将它们复制到新数组中(“1”部分处理基于0的索引)。

尝试使用
%
而不是
/
,并且不需要第二个
if
语句 因为您希望开始将数字从索引0存储到
temp
数组中,而不是像代码那样从索引1存储

public static int[] replicate(int[] array, int n) {
    int[] newArray = new int[array.length - array.length / n];
    int j = 0;
    for (int i = 0; i != array.length; i++) {
        if ((i + 1) % n != 0) {
            newArray[j++] = array[i];
        }
    }
    return newArray;
}
公共静态int[]复制(int[]arr,int n){
int[]temp=新int[arr.length];
int电流=0;
整数计数=0;
对于(int i=0;i
您所拥有的有什么问题吗?您的问题是什么?是否要删除3的倍数或每三分之一个数字?当前代码没有向临时数组中添加任何内容,而且我还得到了一个ArrayIndexOutOfBounds例外情况。如果(count/n!=0),为什么要使用
?我建议您尝试一下
/
,以检查您是否了解它的功能。我也看不到白名单[0]=白名单[1]背后的逻辑Woops,不是要添加白名单[0]=白名单[1]…只是编辑掉了。我使用if(count/n!=0),因为我只想包含索引中的元素,而不是来自每三个元素。他不想导入任何内容。谢谢!这正是我想要的
public static int[] replicate(int[] arr, int n) {
    int[] temp = new int[arr.length];
    int current=0;
    int count = 0;

    for (int i = 0; i < arr.length; i++) {
        if (count%n!=0){
            temp[count] = arr[i];
            count++;
        }
    }

    int[] whitelist = new int[count];

    System.arraycopy(temp, 0, whitelist, 0, count);

    return whitelist;
}