0
public class Thing
{
public static void main (String[] args)
    {
    //I set my veriables and prompt user to enter number of names
    //Prompt user for First and Last name and Store names in an array of classes

    Arrays.sort(listOfName, new Comparator<otherClass>()//Sort names according to last name
    //code here for that (which i have but not the issue)
    for (int i = 0; i<numName; i++)
        {
        ans = JOptionPane.showInputDialog(null,"How Many Students does: \n "+ listOfName[i]+ " Have");
        int val = Integer.parseInt(ans);
        otherClass.setnumStudents(val);// in my Separate class I have a setnumStudents
        }
    for(int i = 0; i<numName; i++)
        {
        System.out.println(listOfName[i]);
        }
    }

在我的程序的早些时候,我将数组设置为根据单独的类进行存储,otherClass最初int numStudents设置为 0,在收集名字和姓氏之后,我将数组按字母顺序排列,然后查询每个人有多少学生。使用 settersetnumStudents我尝试更改numStudents存储在数组中。使用我的代码,我得到这个错误:

non-static method setnumStudents(int) cannot be referenced from a static context
        otherClass.setnumStudents(val);
             ^              

感谢您对此问题的任何帮助

4

2 回答 2

1

我想你想要:

listOfName[i].setnumStudents(val);

或者沿着这条线的东西。Java 编码约定通常具有以大写开头的驼峰式命名的类名。是otherClass类名吗?应该是OtherClass为了避免混淆。

我不知道'listOfTutor [i]'是否是正确的实例,listofName[i]但您需要找到一个实例otherClass

于 2013-03-26T16:43:26.947 回答
0

不能从静态上下文引用非静态方法 setnumStudents(int)

意味着您正在使用类访问非静态方法,而您应该使用实例(对象)。

在下面的

otherClass.setnumStudents(val);

otherClass 是您提到的其他类的名称吗?在这种情况下,您需要实例化此类并使用该实例。

顺便说一句,在 Java 中,类名通常以约定的大写字母开头。

于 2013-03-26T16:41:11.500 回答