【发布时间】: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 对象,要么将方法设为静态。