Я пытаюсь переместить объекты в моем частичном массиве, чтобы они были переопределены, и все перемещается влево. Я знаю, что вы можете использовать метод 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;
Чтобы он выполнял поиск по циклу, начинайте с индекса и заменяйте его всеми предыдущими объектами в массиве. Но предположим ли я использовать временную переменную, чтобы удерживать это? Я думаю, моя проблема заключается в понимании того, где второй цикл должен был начаться/закончился.
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
Теперь адаптируйте этот код к тому, что вы пытаетесь выполнить.
search
переменной?