我正在制作一个程序来跟踪员工信息。我有一个包含记录 ([employee][piece_of_data]) 的二维数组,我希望能够通过循环数组并使当前记录等于以下记录来删除记录。
现在它正在删除所选记录的前面记录而不是当前记录,似乎无论我如何操作它,它都不会删除正确的记录。
这是我的代码:
//Delete current record, collapse records into it
for (int iLoop = iEmployee; iLoop < iEmployeeCount; iLoop++){
for (int iLoop2 = 0; iLoop2 <= 20; iLoop2++){
sData[iLoop][iLoop2] = sData[iLoop + 1][iLoop2];
}
}
最佳答案
我建议您不要使用这个奇怪的双数组,而是以正确的方式解决这个问题。目前的代码比较困惑且不可维护。更糟糕的是,它似乎可能会重复记录,因为在左移 2D 数组中的所有列后,最后一列将包含倒数第二列的重复项。
Java 是一种面向对象的语言。使用对象。
//declare a class to store the info about one employee
//this will replace one column in your double array
public class Employee {
//each one of these fields corresponds to one cell in your double array
public string data1;
public string data2;
public string data3;
}
然后将它们存储在链表中:
//this is just an example of how you would add employees to a list instead of an array
LinkedList<Employee> employees = new LinkedList<>(); //make a linked list
Employee toAdd = new Employee(); //make an employee
toAdd.data1 = "example"; //set up his data
toAdd.data2 = "setting";
toAdd.data3 = "fields";
employees.add(toAdd); //add him to the list
然后要删除员工,不要使用数组执行这种复杂且低效的方法,只需获取所需员工的链接并调用即可
employees.remove(iEmployee);
其中 iEmployee 是要删除的员工列表中的编号。
关于java - 通过折叠所有元素来删除二维数组中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37956035/