尝试排序时Java中的异常错误

时间:2013-12-01 22:42:16

标签: java exception

我正在使用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)

很抱歉代码的数量,但任何帮助将不胜感激, 提前致谢, 杰森

2 个答案:

答案 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);传递给函数。