需要帮助使用索引

时间:2016-11-20 07:57:32

标签: java arrays sorting

我实际上需要帮助通过调用myStudents[1]方法从myStudents类中的GradeBookTest1数组中删除gbook.remove(1)元素,该方法将索引1作为参数并将其传递给remove(int inputIndex)类中的GradeBook1参数变量。

您可以在GradeBook1类中看到我的删除方法并将其停留在那里。

注意:由于清晰,我已从GradeBook1类中删除了除remove(int inputIndex)方法之外的其他内容。谢谢!

public class GradeBookTest1 {

public static void main(String[] args) {

    // Create an array of students
    Student[] myStudents = new Student[4];
    myStudents[0] = new Student("John", 72.5, new Date(1995, 12, 21));
    myStudents[1] = new Student("Jane", 85, new Date(1996, 1, 12));
    myStudents[2] = new Student("Bob", 64.3, new Date(1994, 5, 18));
    myStudents[3] = new Student("Bill", 98, new Date(1998, 1, 1));

    // Use the above array to initialize an object of GradeBook
    GradeBook1 gbook = new GradeBook1(myStudents);
    // print the grade book
    System.out.println("My GradeBook:");
    System.out.println(gbook);

    /* Let's remove a student from grade book */
    gbook.remove(1); // remove the second student

    // print the grade book again!
    System.out.println("My GradeBook:");
    System.out.println(gbook);

    }
}

public class GradeBook1 { 

    public void remove(int inputIndex) 
    {
        Student[] stud = new Student[students.length];

        for (int i=0; i<students.length; i++ )
        {
            stud[i] = new Student(students[i].getName(), students[i].getGrade(), students[i].getBirthdate());
        }
    }
}

2 个答案:

答案 0 :(得分:3)

一种可能的方法是使用ArrayList,但另一种简单的方法可以是:

public int[] removeElement(int[] original, int element){
    int[] n = new int[original.length - 1];
    System.arraycopy(original, 0, n, 0, element ); // can be replaced by a loop
    System.arraycopy(original, element+1, n, element, original.length - element-1);
    return n;
}
上面代码段中的

this可以替换为以下for循环。您可以根据需要修改代码,因为它很简单。

for (int i = 0; i < element; i++) {
    n[i] = original[i];
}
for (int i = element + 1; i < original.length; i++) {
    n[i - 1] = original[i];
}

如果要将所有元素从一个数组复制到另一个数组,可以简单地使用System.arraycopy( src, 0, dest, 0, src.length ),其中srcdest是两个整数数组。

答案 1 :(得分:2)

以下面的程序为例:

public class Main {
public static void main(String[] args) {
    int[] a = {1, 2, 3, 4, 5, 6};

    System.out.println(Arrays.toString(remove(a, 5)));

}

static int[] remove(int[] array, int index) {
    if (!rangeCheck(array, index)) return null;

    int[] _new = new int[array.length - 1];
    int i = 0;
    for (i = 0; i < index; i++) {
        _new[i] = array[i];
    }

    for (i = index + 1; i < array.length; i++) {
        _new[i - 1] = array[i];
    }
    return _new;
}

static boolean rangeCheck(int[] a, int index) {
    return index >= 0 && index < a.length;
}
}

这是catch :: above程序基于0索引。如果您需要删除n'th元素,则索引应为n-1