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

Нов съм в Java, използвам IDE на eclipse и когато се опитвам да създам публичен статичен int, получавам синтактична грешка, която ми казва да поставя ;. Получавам тази грешка само когато инициализирам променливата. Другите 2 променливи се използват добре в основния клас и са глобални променливи. Получавам синтактична грешка в частта 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