我正在使用java进行排序,但我遇到了错误。错误源于我的类文件,然后我依次测试,不会工作。这是班级
import java.util.*;
public class CompanyDataBase
{
ArrayList<Employee> employee = new ArrayList<Employee>();
}
//Default Constructor
public CompanyDataBase()
{
}
//Methods
//Add Employee
public void addEmployee(Employee newGuy)
{
employee.add(newGuy);
}
//Get the employees
public ArrayList<Employee> getEmployees()
{
return employee;
}
//Sort by name
public ArrayList<Employee> sortByName()
{
Collections.sort(employee, new EmployeeNameComparator());
return employee;
}
//Sort by salary
public ArrayList<Employee> sortBySalary()
{
Collections.sort(employee, new EmployeeSalaryComparator());
return employee;
}
//Bubble Sort
public void bubblesortBySalary(int [] employee)
{
int temp = 0;
boolean arraySorted = false;
for (int i = 0; i < employee.length - 1 && !arraySorted;
i++ )
{
arraySorted = true; // start a new iteration;
// maybe the array is sorted
for ( int j = 0; j < employee.length - i - 1; j++ )
{
if ( employee[j] > employee[j + 1] )
{
// swap the adjacent elements
// and set arraySorted to false
temp = employee[j + 1];
employee[j + 1] = employee[j];
employee[j] = temp;
arraySorted = false;
}
}
}
}
}
此处还有我正在使用的测试人员
public class BubbleSortTester
{
public static void main(String[] args)
{
CompanyDataBase myDb = new CompanyDataBase();
myDb.addEmployee(new Employee("James, John", 34, 45234));
myDb.addEmployee(new Employee("Conroy, Mike", 19, 19234));
myDb.addEmployee(new Employee("Gavigan, Luke", 28, 30234));
myDb.addEmployee(new Manager("Gates, Bill", 28, 44000, 2000));
myDb.bubblesortBySalary();
for(Employee currEmployee: myDb.getEmployees())
{
System.out.println(currEmployee.getDescription());
}
}
}
我遇到的问题是,当我尝试编译我的测试仪时,它会给我以下错误&gt;&gt;&gt;&gt;
BubbleSortTester.java:16:错误:类CompanyDataBase中的bubblesortBySalary方法无法应用于给定的类型;
myDb.bubblesortBySalary();
^
必需:int []
发现:没有争论
原因:实际和正式的参数列表长度不同
1错误
然后我在Eclipse中尝试了它而不是jGrasp并且建议我输入null但是当我输入null时它返回此错误&gt;&gt;&gt; 线程“main”java.lang.NullPointerException中的异常 在CompanyDataBase.bubblesortBySalary(CompanyDataBase.java:46) 在BubbleSortTester.main(BubbleSortTester.java:16)
很抱歉代码的数量,但任何帮助将不胜感激, 提前致谢, 杰森
答案 0 :(得分:2)
您已将bubblesortBySalary
称为:
myDb.bubblesortBySalary();
但您对该方法的定义是
public void bubblesortBySalary(int[] employee){
....
}
所以该方法期待int[]
,但没有收到一个
您的方法似乎期望整数数组排序它调用员工,您还有一个名为employees的实例字段,我相信您可能打算对其进行排序。如果是这样,您将需要提供一些方法来比较Employees并删除传递的int[]
。如果您只想对整数进行排序,则需要将这些整数提供给方法
答案 1 :(得分:2)
函数bubblesortBySalary();
需要类型为int[]
的参数。你需要提供它来编译。
传递null
使编译器感到满意,但是没有解决您没有提供要排序的数组的基本问题。定义数组后,例如int[] employee = new int[] {1, 2, 3, 4}
,将其作为myDb.bubblesortBySalary(employee);
传递给函数。