2014-10-18 3 views
-3

Я новичок в java, и у меня возникают трудности с использованием оператора return. Учитель просит создать методы в соответствии с описаниями, о которых мне не удается создать оператор get: «public Exam()», описание «инициализирует переменные экземпляра: счетчик 0, общее число 0, и оценивается как «» (2 Pts) ». А другой - «public int getCount()», описание «возвращает значение count (1 Pts)». Упрощен его следующим образом, в соответствии с тем, как я интерпретировал инструкции.Java - Сложность Использование return

public class Exam{ 

    public Exam() 
    { 
     int count = 0; 
     int total = 0; 
     String scores = ""; 
    } 
    public int getCount() 
    { 
     return count; 
    } 
} 

Компиляция как есть дает ошибку, которая говорит, что он не признает символ при указании на «кол» в «подсчете возврата», и другие методы зависят от переменного экзамена() и их обновления ,

Редактировать: Поскольку он получил так быстро проголосовали, я буду гадать догадку и сказать, что это, вероятно, что-то очевидное.

ответ

1

Он не узнает об этом, и он тоже не должен. Вы не определили count в любом месте, кроме вашего конструктора.

Это не проблема с оператором return, это проблема с областью действия.

Короткий ответ здесь вы можете объявить их за пределами своего конструктора, и Instantiate их внутри. Это будет работать, так как ваша переменная теперь определена на уровне, который может использовать как ваш конструктор, так и ваш геттер.

public class Exam { 
    private int count; 
    private int total; 
    private String scores; 

    public Exam() { 
     count = 0; 
     total = 0; 
     scores = ""; 
    } 

    public int getCount() { 
     return count; 
    } 
} 

Немного более привлекательный ответ - это смещение; это почему это работает.

Переменная, определенная внутри блока (обозначается фигурными фигурными скобками), считается находящейся в пределах объема этого блока и всех остальных блоков, содержащихся в нем.

Это означает, что ваш класс и все связанные с ним методы имеют в себе какую-то область видимости.

Теперь, объявив свои поля на уровне класса, любой метод (или конструктор) может использовать эти переменные.

Если вы объявляете их в своем конструкторе, то только конструктор знает о существовании этих переменных, а другие методы не будут связаны с данными, которые они содержат.

Смежные вопросы