当前位置: 首页 > 知识库问答 >
问题:

不能从静态上下文引用非静态方法(方法名称())。为什么?

蔚学林
2023-03-14

我真的对此感到困惑!我有2个班,俱乐部和会员。在Membership中,我有方法getMonth();在Club中,我有joinedMonth(),它接受参数'month'--所以用户输入一个月,然后我希望它返回在该特定月份加入的成员资格。

我试图从Club类调用getMonth()方法,这样我就可以继续比较月份的整数。但是,当我试图调用该方法时,我只得到提到的“非静态方法getMonth()不能从静态上下文引用”。

基本上,这是什么,我该如何化解?

提前谢谢!

俱乐部:

public class Club
{
    private ArrayList<Membership> members;
    private int month;

    /**
     * Constructor for objects of class Club
     */
    public Club()
    {
        // Initialise any fields here ...

    }

    /**
     * Add a new member to the club's list of members.
     * @param member The member object to be added.
     */
    public void join(Membership member)
    {
        members.add(member);
    }

    /**
     * @return The number of members (Membership objects) in
     *         the club.
     */
    public int numberOfMembers()
    {
        return members.size();
    }


        /**
    * Determine the number of members who joined in the given month
    * @param month The month we are interested in.
    * @return The number of members
    */
    public int joinedMonth(int month){

        Membership.getMonth();

    }



}

成员资格:

public class Membership
{
    // The name of the member.
    private String name;
    // The month in which the membership was taken out.
    public int month;
    // The year in which the membership was taken out.
    private int year;

    /**
     * Constructor for objects of class Membership.
     * @param name The name of the member.
     * @param month The month in which they joined. (1 ... 12)
     * @param year The year in which they joined.
     */
    public Membership(String name, int month, int year)
        throws IllegalArgumentException
    {
        if(month < 1 || month > 12) {
            throw new IllegalArgumentException(
                "Month " + month + " out of range. Must be in the range 1 ... 12");
        }
        this.name = name;
        this.month = month;
        this.year = year;
    }

    /**
     * @return The member's name.
     */
    public String getName()
    {
        return name;
    }

    /**
     * @return The month in which the member joined.
     *         A value in the range 1 ... 12
     */
    public int getMonth()
    {
        return month;
    }

    /**
     * @return The year in which the member joined.
     */
    public int getYear()
    {
        return year;
    }

    /**
     * @return A string representation of this membership.
     */
    public String toString()
    {
        return "Name: " + name +
               " joined in month " +
               month + " of " + year;
    }
}

共有1个答案

吴飞语
2023-03-14

成员身份是一个类。但只有当方法是静态的时才允许调用方法。您的GetMonth方法不是静态的,因此需要Membership类的实例来调用它。您的club类中已经有一个实例列表,因此选择其中一个实例并对其调用GetMonth

 类似资料:
  • 问题内容: 我想一劳永逸地理解这一点。 为此,请原谅下面粘贴的大量代码,但是我不想遗漏任何细节。 我唯一更改的是加载的URL。但这不会导致错误。 我想将我的函数称为“ readPosiitons ”。简单的解决方案,使其静态。真正的解决方案,我不确定。 请帮助我更好地了解如何以正确的方式解决此错误。 谢谢!! 问题答案: 真正的解决方案?不要在方法中放太多东西。那是给菜鸟的。 Java是一种面向对

  • 所以我尝试绑定我的Numpad键,以便在计算器应用程序中使用它们,但当我尝试从主窗口以字符串形式发送keyEvent时。java到我的MainWindowController公共void方法它给了我一个错误“不能从静态上下文引用非静态方法”,即使我的类都不是静态的?以下是主窗口代码: } 这里是MainWindowController文件(看keyPress方法)

  • 我想更改FrameLayout的背景。这是我现在使用的代码: 但出现以下错误: 无法从静态上下文引用非静态方法“setBackground(android.graphics.drawable.drawable)”。 怎么了?

  • 我从这行中得到了“无法从静态上下文引用非静态方法”错误:

  • mainactivity.java: xmlReader.java: (如果需要,我也可以为station.java和dbhandler.java添加代码) 我怎样才能绕过这个编程悖论呢?我通常能为这里的任何问题找到答案,但这是我第一次找不到答案。如果你知道我错过的解决方案的链接,请在下面发布。多谢。

  • 这是一个代码的一部分,但当我执行时,我得到了一个错误程序是关于线性规划对不起我的英语,或关于愚蠢的问题 “错误:不能从静态上下文引用非静态方法get_total_profity(String)