改变数组元素?

Changing array element?

我的目标是有一个像这样的数组 int arrMarks[] = {10,-15,25,102,30} 当一个元素低于零或高于 100 时,我需要让它等于零。然后这些元素应该在数组的最后一个位置,另一个的位置删除一个位置。那么如何在不使用任何包裹或短缺的情况下做到这一点呢?

public void validateMarks(int [] array){
        int [] array1 = new int[5];

        for(int i = 0; i<array.length; i++){
            if(array[i] < 0 || array[i] > 100){
                int f= array1.length-1;

                array1[f] = array[i];
                array1[f] = 0;
                f--;
            }

            else if(array[i] > 0 || array[i] < 100){

                array1[i] = array[i];

            }
            System.out.println(array1[i]);
        }
    }

你可以使用交换方法。

public void swap(int i, int j, int[] arr) {
int t = arr[i];
arr[i] = arr[j];
arr[j] = t;
public void validateMarks(int[] array){
    int[] array1 = new int[array.length];
    int pos = 0;
    for (int i = 0; i < array.length; i++){
        if (array[i] >= 0 && array[i] <= 100)
            array1[pos++] = array[i];
    }
    for (int i = 0; i < array.length; i++){
        System.out.println(array1[i]);
    }
}

这里要吸取的教训:

  • 不要对值进行硬编码(5 更改为 array.length
  • 了解范围规则(fpos 需要在 for 循环之外声明)
  • 有时您不需要存储值

最后一点暗示 array1 实际上不是必需的。我把这个挑战留给了 OP。

好吧,让我检查一下我是否理解正确。据我了解,您想检查每个数组值是否小于 0 或大于 100。如果是这样,应从原始数组中删除该值(替换为 0)并复制到新数组的最后一个位置.所以,如果我明白了,我的建议是:

public int[] validateMarks(int [] originalArray){
    int[] returnArray = new Int[originalArray.length];
    int i,j;

    j=originalArray.length; //returnArray will be visited backwards

    for(i=0;i<originalArray.length;i++){ //originalArray will be visited forwards
        if(originalArray[i]<0 || originalArray[i]>100){
            returnArray[j] = originalArray[i]
            //Last valid returnArray's position will receive originalArray's value which, is less than 0 or higher than 1000
            originalArray[i] = 0;
            //The value which was less then 0 or higher than 100 will be replaed by 0 at the originalArray
            j--;
            //returnArray's counter is decreased so it can be visited backwards
        }
    }

    return returnArray;
    //The new processed array will be returned by this method. If you prefer, you can set this method as void and work it your way.
}

希望对你有帮助。干杯!