Синтаксическая ошибка в Eclipse (публичные статические переменные)

Я новичок в Java, я использую IDE eclipse, и при попытке создать общедоступный статический int я получаю синтаксическую ошибку, говорящую мне поставить ;. Я получаю эту ошибку только при инициализации переменной. Две другие переменные хорошо используются в основном классе и являются глобальными переменными. Я получаю синтаксическую ошибку в части public static int classaverage.

Вот код:

public class Calcpromedio {

    public static int classaverage;

    classaverage = valusers / numuser;  

}

Я не знаю, являются ли они особыми правилами при использовании глобальной переменной, поэтому, если вы найдете решение, сообщите мне, почему и существуют ли какие-либо правила.

Спасибо

Я надеюсь, что когда-нибудь я смогу отвечать на вопросы и не получать ответов на вопросы...


person Antonio Gonzalez    schedule 12.03.2015    source источник
comment
Привет @Antonio Gonzalez, я вижу, ты новичок в SO. Если вы считаете, что ответ решил проблему, отметьте его как «принятый», щелкнув зеленую галочку напротив этого ответа. Это помогает сосредоточиться на старых SO, на которые до сих пор нет ответов.   -  person KrishPrabakar    schedule 13.03.2015
comment
Как принять   -  person KrishPrabakar    schedule 13.03.2015


Ответы (2)


Проблема в строке:

classaverage = valusers / numuser; 

Это выражение находится вне всех методов и блоков кода. Вместо этого вы можете переназначить его на:

public static int classaverage = valusers / numuser;

Или используйте статический блок,

public static int classaverage;

static {
    classaverage = valusers / numuser;
}

Оба эти значения будут рассчитаны при загрузке класса — статическая инициализация. Это может быть не предполагаемое поведение.


Но, основываясь только на одних именах, это похоже на расчет, который зависит от большего количества данных, чем то, что будет доступно во время статической инициализации. Я бы рекомендовал перенести это назначение в метод после того, как все данные будут доступны и собраны.

public void provideData(int[] someData){
    //... Somewhere classaverage's value should be updated
    classaverage =  valusers / numuser;
}
person Obicere    schedule 12.03.2015

Ваша вторая строка classaverage = valusers / numuser; должна быть в статическом блоке/методе/конструкторе.

person KrishPrabakar    schedule 12.03.2015