Сдвиг объекта в частичном массиве

1

Я пытаюсь переместить объекты в моем частичном массиве, чтобы они были переопределены, и все перемещается влево. Я знаю, что вы можете использовать метод arrayCopy, но я пытаюсь использовать цикл for чтобы понять, что arrayCopy метод 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
    Не могли бы вы опубликовать инициализацию массива и желаемый результат, чтобы мы могли проверить?
  • 0
    Неясно, чего вы пытаетесь достичь. Какова цель search переменной?
Показать ещё 1 комментарий
Теги:
arrays

1 ответ

1
Лучший ответ
public static native void arraycopy(Object src,  int  srcPos,
                                    Object dest, int destPos,
                                    int length);

java.lang.System.arrayCopy - это native функция в java поэтому я сомневаюсь, что ваш цикл поможет вам понять, как он "действительно" обрабатывается, поскольку он, вероятно, написан на языке c и просто перемещает pointer чтобы сделать его более эффективным, но в любом случае.

Хотя очень непонятно, каков ваш вопрос или что вы на самом деле пытаетесь сделать, вот простой алгоритм, который будет 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
    И почему это было отвергнуто?
  • 0
    Вы пробовали это?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню