Джавак говорит int (x = 1); не утверждение тогда говорит ';' ожидается. Что не так с моим кодом?
Я на Mac Mini G4 пытаюсь выучить Java. Когда я пытаюсь скомпилировать "DooBee.java", набрав "javac DooBee.java" в терминале, я получаю две ошибки. Вот как выглядит мой терминал:
> nephi-shields-mac-mini:/developer/MyProjects
> nephishields$ javac DooBee.java
> DooBee.java:5: not a statement
> int (x = 1);
> ^ DooBee.java:5: ';' expected
> int (x = 1);
> ^ 2 errors nephi-shields-mac-mini:/developer/MyProjects
> nephishields$
Вот что я ввел в свой файл "DooBee.java":
public class DooBee {
public static void main (String[] args) {
int (x = 1);
while (x < 3) {
System.out.print ("Doo");
System.out.print ("Bee");
x = x + 1;
}
if (x == 3) {
System.out.print ("Do");
}
}
}
Я сделал ошибку? Или что-то не так с моим компьютером? извините, если этот вопрос (или похожий) уже был задан. Я честно пытался найти ответ самостоятельно (поиск в Google, поиск переполнения стека, несколько раз переписывал мой код, проверил мою книгу "Head First Java", чтобы убедиться, что я печатал правильно), но оказался пустым.
4 ответа
Проблема в том, что (x = 1)
является выражением, а не объявлением, поэтому его нельзя использовать для объявления переменной x
, Удалите скобки, и вы получите правильное объявление с инициализатором.
Правильная декларация:
public class DooBee {
public static void main (String[] args) {
int x = 1;
...
}
}
Запомните ваш порядок действий в Java. Элементы внутри круглых скобок оцениваются первыми, поэтому оценивается (x=1), что на самом деле не имеет смысла в Java, отсюда и ошибка.
Как правило, скобки заключаются только в приведение, предложения после операторов if, while, else if, else и for или в ситуациях, когда вы хотите, чтобы ваша логическая логика была очень ясной.