Мой метод не возьмет объект
Я делаю программу броска кубиков, чтобы имитировать бросание кубика заданное количество раз. Сначала я создаю объект "Die" с заданным числом сторон, а затем использую этот "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 не может использовать это в статическом контексте
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
на Die
объект.
Чтобы исправить обе ошибки, просто переместите roll
метод к Die
учебный класс!