Проблема синтаксиса или семантики? - PullRequest
5 голосов
/ 10 января 2012

Метод ниже не может быть выполнен в Java, потому что переменная i может оставаться неинициализированной ко времени ее использования.Это проблема синтаксиса или семантики?

public int odd( boolean b ){
    int i;
    if( b ){ i = 3;}
    return i;
}

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

Ответы [ 2 ]

8 голосов
/ 10 января 2012

Это ошибка, обнаруженная компилятором Java, но не синтаксическая ошибка; это совершенно верно в соответствии с грамматикой Java. Это обнаруживается на более поздних этапах анализа, что делает его семантической ошибкой.

Тем не менее, звучит так, будто ваш инструктор хочет определить любую ошибку компилятора как синтаксическую ошибку и, возможно, хочет, чтобы "семантическая ошибка" означала что-то не так во время выполнения. Поскольку инструктор оценивает домашнее задание, вы вынуждены принять его определения (даже если они совершенно неверны, как в этом случае;)).

0 голосов
/ 10 января 2012

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

так в Java, это становится синтаксической ошибкой.

см. Это: http://c2.com/cgi/wiki?SyntaxVsSemantics

и это: http://wiki.answers.com/Q/What_are_the_Differences_between_syntax_and_semantic_error

...