【问题标题】:My method won't take an object我的方法不会接受对象
【发布时间】:2017-07-10 17:01:52
【问题描述】:

我正在制作一个掷骰子程序来模拟掷骰子给定的次数。首先,我创建一个具有给定面数的 Die 对象,然后在模拟滚动次数的 roll 方法中使用该 Die。

有人可以澄清一下吗?

public class Die {

    private int numSides;

    public Die() {
        numSides = 0;
    }

    public Die(int sides){
        numSides = sides; 
    }

    public void setSides(int sides){
        numSides = sides;
    }

    public int getSides(){
    return numSides;
    }
}

public class DiceRoll {

    public static void main(String []args){


        Die sixSides = new Die(6);
        sixSides.roll(7); //ERROR: "the method is undefined for type Die" 


        //Prints out the roll outcomes for the given die
        public void roll(int numTimes){
            for (int i = 0; i < numTimes; i++){
                int rand = 1 + (int)(Math.random()*this.getSides());
                System.out.println(rand);
            //ERROR: "cannot use THIS in a static context".

            }
        }   
    }
}

错误是:

没有为类型 Die 定义方法 不能在静态上下文中使用它

【问题讨论】:

  • roll 是在 DiceRoll 而不是 Die 中定义的,但您试图在 Die 上调用它
  • 函数 main 被定义为静态的,这意味着在它内部执行的所有代码 - 在静态上下文中执行
  • 无法在 main 中定义方法?只需从您的第二条评论复制到函数末尾并在模具类中打印
  • 您正在尝试在 main 方法中定义该方法。把它移到外面。请注意,您要么需要实例化 DiceRoll 对象,要么将方法设为静态。

标签: java dice


【解决方案1】:

您必须在Die 类中定义一个roll() 方法

【讨论】:

    【解决方案2】:

    这个方法:

    public void roll(int numTimes){
        for (int i = 0; i < numTimes; i++){
            int rand = 1 + (int)(Math.random()*this.getSides());
            System.out.println(rand);
        }
    } 
    

    目前在main 方法中声明,这首先是无效的。您不能在方法中声明方法。这解释了第二个错误。 main 是静态的,因此您不能在其中使用 this

    出现第一个错误是因为roll 方法未在Die 类中定义。为此:

    Die sixSides = new Die(6);
    sixSides.roll(7);
    

    roll 必须在 Die 类中声明。这是因为您试图调用 roll on Die 对象。

    要修复这两个错误,只需将 roll 方法移至 Die 类!

    【讨论】:

    • 啊,是的,我太慢了。有道理。谢谢。
    • @gunsnfloyd 如果您认为我的回答回答了您的问题,请考虑点击该复选标记接受!
    猜你喜欢
    • 1970-01-01
    • 2015-03-17
    • 1970-01-01
    • 1970-01-01
    • 2015-02-06
    • 2017-04-18
    • 2012-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多