#java #compiler-errors #return
#java #ошибки компилятора #Возврат
Вопрос:
Я пытаюсь изучать Java, бездельничая и создавая разные вещи, такие как этот пример с кубиками. Однако в приведенном ниже классе я застрял на этом отсутствующем возврате, но я не уверен, почему. Любая помощь приветствуется!
Test1.java:12: ошибка: отсутствует оператор возврата } ^ 1 ошибка
import java.util.Random;
class Char
{
Random r = new Random();
int nSides;
public int Die(int sides)
{
this.nSides = sides;
r = new Random();
}
public int roll()
{
return r.nextInt(nSides 1);
}
public int roll(int times)
{
int sum = 0;
for (int i = 0; i < times; i )
{
sum = roll();
}
return sum;
}
}
Ответ №1:
Похоже, вы пытались написать конструктор, который, естественно, не имеет возвращаемого значения. Конструктор должен иметь то же имя, что и класс, который он создает.
public int Die
Замените следующим.
public Char(int sides)
{
this.nSides = sides;
r = new Random();
}
В качестве альтернативы вы можете переименовать свой класс Die
.
public class Die {
public Die(int sides)
{
this.nSides = sides;
r = new Random();
}
// Rest of your code
}
Ответ №2:
Вам нужно сказать
public Char(int sides)
или, предполагая, что вы хотите, чтобы класс действительно назывался «Die», измените объявление класса на:
class Die
и строка конструктора (?) для:
public Die(int sides)
(удаление «int»).
Ответ №3:
В функции Die применяется оператор возврата:
public int Die(int sides)
{
this.nSides = sides;
r = new Random();
return 0; // whatever you want to return
}
или удалите int
перед смертью и сделайте это void
.
public void Die(int sides)
{
this.nSides = sides;
r = new Random();
}
Ответ №4:
Похоже, вы пытаетесь создать вызываемый класс Die
, который должен быть его конструктором. Попробуйте это:
import java.util.Random;
class Die {
private Random r = new Random();
private final int nSides;
public Die(int sides) {
this.nSides = sides;
}
// rest of class omitted
}
Примечания:
- Конструкторы не объявляют возвращаемый тип и называются так же, как класс.
- Нет необходимости повторно инициализировать
Random
поле (строка удалена) - Лучше объявить
nSides
какfinal
(см. Код) - Лучше сделать все поля
private