无法从静态方法调用实例方法

时间:2012-10-20 13:06:52

标签: java

我有这个课程,我只需要帮助方法中的toString()来实际显示结果。它给了我一个错误,我无法在静态上下文中使用getName()getId()

public static void bubbleSort(Student[] array)
{
    for(int i=(array.length); i>0; i--)
        for(int j=1; j<(array.length-i); j++)
            if(array[j].getName().compareTo(
               array[j+1].getName())<0) {
                Student Temp = array[j];
                array[j] = array[j+1];
                array[j+1] = Temp;
            }

    String s = null;
    for (int i=0; i<array.length; i++) {
    // the error is here under the getName and getId 
        s= s+ getName()+" "+ getId() ;
    } 
    System.out.print (s);
}

3 个答案:

答案 0 :(得分:1)

而不是:

s= s+ getName()+" "+ getId() ;

您可能需要这样做:

s= s+ array[i].getName()+" "+ array[i].getId() ;

并如上述评论所述:

String s = "";

答案 1 :(得分:1)

我认为您要打印之前排序的Student的名称和ID。

public static void bubbleSort(Student[] array)
{
    for(int i=(array.length); i>0; i--)
    {

        for(int j=1; j<(array.length-i); j++) 
        {
             if( array[j].getName().compareTo(array[j+1].getName())<0)

            {
                Student Temp = array[j];
                array[j] = array[j+1];
                array[j+1] = Temp;
            }

        }
    }

    String s = ""; // should not be null

    for (int i = 0; i < array.length; i++)
    {
        s = s + array[i].getName()+" "+ array[i].getId(); // changed this line
        System.out.print (s); // moved this into the loop because I think this makes more sense
    }
}

方法getName()getID()属于对象Student,而不是定义bubbleSort()的类的方法。

答案 2 :(得分:0)

您可能需要array[i].getName()array[i].getId(),而不仅仅是getName()getId()