Почему я получаю эту ошибку » Синтаксическая ошибка в токене»;», { ожидается после этого токена «

#java #arrays

#java #массивы

Вопрос:

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

Это та часть кода, в которой я получаю ошибку:

 class DateFormatSymbols{
    String[] monthNames = new String[11];
    String[] weekDays = new String[6];
    
    monthNames[0] = "January";  
}
 

Это весь код, он еще не завершен из-за этой ошибки.

 public class Calendar {

        private static int day;
        private static int month;
        private static int year;
        
        public static void main(String[] args) {
            
    
        }
    
        public static int getDay() {
            return day;
        }
    
        public static void setDay(int day) {
            Calendar.day = day;
        }
    
        public static int getMonth() {
            return month;
        }
    
        public static void setMonth(int month) {
            Calendar.month = month;
        }
    
        public static int getYear() {
            return year;
        }
    
        public static void setYear(int year) {
            Calendar.year = year;
        }
    
    }
    class DateFormatSymbols{
        String[] monthNames = new String[11];
        String[] weekDays = new String[6];
        
        monthNames[0] = "January";  
    }
 

Комментарии:

1. Вы не можете определить поле таким образом monthNames[0] = "January"; в классе class DateFormatSymbols . В принципе, для этого нужен какой-то блок.

Ответ №1:

У вас есть оператор в теле класса.

 class DateFormatSymbols{
    String[] monthNames = new String[11]; <-- Field declaration with an initializer
    String[] weekDays = new String[6];

    monthNames[0] = "January";  // <-- Statement
} 
 

Вы могли бы переместить оператор в конструктор.

 class DateFormatSymbols{
    String[] monthNames = new String[11];
    String[] weekDays = new String[6];

    DateFormatSymbols() {   // <-- Constructor
        monthNames[0] = "January";  
    }
} 
 

Или вы могли бы поместить его в блок инициализатора экземпляра.

 class DateFormatSymbols{
    String[] monthNames = new String[11];
    String[] weekDays = new String[6];

    {    // <-- Initializer block called for each instance
        monthNames[0] = "January";  
    }
}