Вопрос:
Простите меня, чтобы опубликовать вопрос, очень похожий на тот, который я опубликовал вчера вечером. Я упростил проблему, чтобы спросить что-то более конкретное:
Я получаю ошибку (класс, интерфейс или enum expected), когда я использую следующий код:
import java.util.*; ArrayList<egg> eggys = new ArrayList<egg>; public class EggTest{ public static void main(String [] args){ egg a = new egg(); egg b = new egg(); eggys.add(a); eggys.add(b); for (egg eggo :eggys){ System.out.println(eggo.size); } } }
Вывод компилятора:
eggys.java:4: class, interface, or enum expected ArrayList<egg> eggys = new ArrayList<egg>; ^ 1 error
Я ничего не делаю правильно. Может ли кто-нибудь помочь мне выяснить, как использовать ArrayList?
Лучший ответ:
Java – это чисто объектно-ориентированное langauage, что означает, что любые/все свойства должны принадлежать сущности i.e class/interface/enums. В вашем случае вы определили свойство/переменную, как указано ниже, которое не относится ни к классу /enum/interface, и поэтому компилятор java жалуется на него.
ArrayList<egg> eggys = new ArrayList<egg>;
Вы не можете использовать это свойство как глобальные переменные на других языках программирования. Явный объектно-ориентированный характер Java не позволяет этого.
Также, как упоминалось в комментарии ниже, “skiwi”, у вас также есть синтаксическая ошибка в определении ArrayList. Вам не хватает скобок в конце. Его следует исправить следующим образом:
ArrayList<egg> eggys = new ArrayList<egg>(); Ответ №1
Вы можете объявлять переменные только внутри класса или метода; а не как код верхнего уровня.
Ответ №2
В отличие от других языков, таких как C или С++, вы не можете ставить переменные или другие объявления вне класса или функции:
public class EggTest{ public static void main(String [] args){ egg a = new egg(); egg b = new egg(); List<egg> eggys = new ArrayList<egg>(); eggys.add(a); eggys.add(b); for (egg eggo :eggys){ System.out.println(eggo.size); } } }
В этом случае локальная переменная выглядит как лучший выбор.
Ответ №3
Две вещи:
-
Поместите эту строку внутри класса
ArrayList<egg> eggys = new ArrayList<egg>;
-
В приведенной выше строке отсутствует(). Это должно быть:
ArrayList<egg> eggys = new ArrayList<egg>();
Ответ №4
сделайте это следующим образом.
import java.util.*; public class EggTest{ ArrayList<egg> eggys = new ArrayList<egg>(); public static void main(String [] args){ egg a = new egg(); egg b = new egg(); eggys.add(a); eggys.add(b); for (egg eggo :eggys){ System.out.println(eggo.size); } } }
ИЛИ
import java.util.*; public class EggTest{ public static void main(String [] args){ ArrayList<egg> eggys = new ArrayList<egg>(); egg a = new egg(); egg b = new egg(); eggys.add(a); eggys.add(b); for (egg eggo :eggys){ System.out.println(eggo.size); } } }
Второй метод может использоваться только в том случае, если вы обращаетесь к переменной ArrayList только внутри основного метода.
Ошибка, которую вы получаете, заключается только в том, что вы пытаетесь объявить свою переменную ArrayList как объявление верхнего уровня. переменные в java могут быть объявлены только внутри класса
или метод.
Ответ №5
Интересно, что список яиц делает над классом. В Java вы не можете объявлять переменные выше нормального класса.