我实际上需要帮助通过调用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());
}
}
}
答案 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 )
,其中src
和dest
是两个整数数组。
答案 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
。