2015-02-05 68 views
1

我在尝试移动部分数组中的对象,以便它们被覆盖,并且所有内容都移到左侧。我知道你可以使用arrayCopy方法,但我试图使用for循环来了解arrayCopy方法的含义。 这是我第一次尝试:在部分阵列中移动对象

boolean search = false; 
for(int i = 0; i < (numCourses - 1); i++){ 
    if(arrayCourses[i].getRegistration() == crn){ 
    arrayCourses[i] = arrayCourses[1 + i];} 
} 
return search; 

不过,我意识到for循环搜索的crn,然后,如果它是等于它,然后将其与一个比它更大的更换,并在整个循环持续,所以我最后的课程数量仍然相同,而不是取代它们。

所以我做了别的东西:

boolean search = false; 
for(int i = 0; i < (numCourses - 1); i++){ 
    if(arrayCourses[i].getRegistration() == crn){ 
    for(int j = i -1; j > 0 ; j--){ 
     arrayCourses[j] = arrayCourses[1 + j];} 
    } 
} 
return search; 

所以它会通过循环搜索,开始索引,并与阵列中的所有对象之前更换。但是,我想用一个临时变量来代替它吗?我想我的问题是理解第二个循环应该开始/结束的位置。

+1

可否请您发布数组初始化和想要的结果,以便我们可以测试? – 2015-02-05 22:57:57

+0

目前尚不清楚你想要完成什么。搜索变量的目的是什么? – gknicker 2015-02-05 23:02:52

+0

@gknicker搜索变量用于检查要替换的crn是否与数组中的任何对象的crn匹配。如果确实如此,则返回true。如果不是,则返回false。 – hello 2015-02-05 23:31:23

回答

1
public static native void arraycopy(Object src, int srcPos, 
            Object dest, int destPos, 
            int length); 

java.lang.System.arrayCopyjava一个native功能,所以我怀疑你的循环将帮助您了解它是如何“真正”处理,因为它可能是写在c,只是移动pointer,使其更有效率,但不管怎么说。

Altough这是很清楚你的问题是什么,或者什么你实际上是试图做的,在这里一个简单的算法,将shift一切都在array向左

public class Test { 

    private Test() { 
     final String[] arrayOfString = {"A", "B", "C", "D"}; 

     for(final String s : shift(arrayOfString)) 
      System.out.println(s); 
    } 

    private String[] shift(final String[] pArrayOfString) 
    { 
     final String[] newArray = new String[pArrayOfString.length - 1]; 

     for(int i = 1; i <= newArray.length; i++) 
      newArray[i - 1] = pArrayOfString[i]; 

     return newArray; 
    } 

    public static void main(String args[]) { 
     Test test = new Test(); 
    } 
} 

,将打印B,C,D

现在,将此代码改编为您正在尝试完成的任何操作。

+0

为什么这是downvoted? – 2015-02-05 23:10:21

+0

你试过了吗? – 2015-02-05 23:10:40

+0

好的,我认为这将有助于引导我达到我想要的。数组是Course [] arrayCourses = new Course [12],并且有一个将对象放入其中的主要方法。如果上述方法是用特定的crn调用的,那么它会在对象数组中搜索并替换为下一个对象。最后,我想要替换某些对象,以便我的数组课程只有10个对象。 – hello 2015-02-05 23:39:19